c++ - OpenCV - approxPolyDP 没有找到矩形
问题描述
在网络摄像头提要上使用 opencv 的 approxPolyDP 函数来检测矩形时,我有时会遇到错误。
附上两张图片,在这两张图片中都可以看到矩形,但是 approxPolyDP 函数有时只能找到一个矩形,有时它只是在两个对角角之间找到一条直线。
我使用 drawContours 函数直接在彩色图像上绘制,但 approxPolyDP 用于还附加的灰度图像。
生成多边形的代码:
for(int i = 0; i < contours.size();i++) {
double epsilon = 0.06*arcLength(contours[i], true);
approxPolyDP(contours[i], contours[i], epsilon, true);
}
任何想法为什么我得到线而不是矩形?如果需要更多代码,请询问。
解决方案
如果 drawContours 的输出包含许多段(超过两个,我的意思是正确的输出),我会尝试减少 approxPolyDP 中的 epsilon,以使 Douglas-Peucker 算法丢弃更少的段。
推荐阅读
- indexeddb - 如何在 indexedDB 中引用多字段索引
- python - 如何在 Windows 上通过 Anaconda 安装 OpenCV?
- sql - Postgres 阻止了 AccessShareLock
- javascript - 执行 TestCafe 断言的正确方法是什么
- java - 为什么我使用多线程的时候,音乐还能播放,但是移动乐谱的显示没有了?
- python - 如何使用烧瓶在浏览器中显示存储在 mongodb 中的图像/pdf 文件?
- c - 错误:在 gettimeofday 的存根上取消引用指向不完整类型的指针
- google-apis-explorer - 无法删除课程 Google Classroom API
- java - 如何禁用 micronaut 的静态内容缓存?
- python - 子图没有绘制实际数据,我该怎么办?