首页 > 解决方案 > 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);
}

任何想法为什么我得到线而不是矩形?如果需要更多代码,请询问。

函数返回行的结果

函数的灰度输入

函数的正确结果类型

标签: c++opencvpolygon

解决方案


如果 drawContours 的输出包含许多段(超过两个,我的意思是正确的输出),我会尝试减少 approxPolyDP 中的 epsilon,以使 Douglas-Peucker 算法丢弃更少的段。


推荐阅读