Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检测不相交的矩形_C++_Opencv_Image Processing - Fatal编程技术网

C++ 如何检测不相交的矩形

C++ 如何检测不相交的矩形,c++,opencv,image-processing,C++,Opencv,Image Processing,我试图检测一些盒状符号和后处理图像的外观如下 我曾尝试使用形态学运算来缩小差距,但差距似乎太大了 cv::Mat element = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(5,5)); cv::morphologyEx(frame, frame, cv::MORPH_DILATE, element); cv::morphologyEx(frame, frame, cv::MORPH_ERODE, element);

我试图检测一些盒状符号和后处理图像的外观如下

我曾尝试使用形态学运算来缩小差距,但差距似乎太大了

 cv::Mat element = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(5,5));
 cv::morphologyEx(frame, frame, cv::MORPH_DILATE, element);
 cv::morphologyEx(frame, frame, cv::MORPH_ERODE, element);
使用findcontour后,图片如下所示

std::vector<std::vector<cv::Point> > contours;
std::vector< cv::Vec4i > hierarchy;

cv::findContours(frame, contours, hierarchy, cv::RETR_CCOMP, cv::CHAIN_APPROX_SIMPLE);
对于这个例子来说,这似乎是可行的,但我要处理的是更嘈杂的图像

  • 我可以采取什么其他预处理策略来关闭边界
  • 如何确定使用miniRectArea包围的区域是矩形?我使用符合最低要求的轮廓长度进行检查,旋转体必须具有一定的角度、呼吸和宽度

  • 我使用findContour正确吗

  • 附言:我不知道这个帖子是否构成了一个太多的问题。如果是的话,我会把问题分成几个帖子


    提前感谢

    我建议在轮廓图片上使用线检测算法,如Hough变换。这将为您提供一组线,然后您可以在比单个轮廓像素更高的级别上对其进行分析(例如,通过查看线交点簇等)。

    我建议在轮廓图片上使用线检测算法,如Hough变换。这将为您提供一组线,然后您可以在比单个轮廓像素更高的级别上对其进行分析(例如,通过查看线交点簇等)。

    另一种方法是删除不属于长方体的细线(例如,通过缩小图像比例,因为线看起来比长方体侧面薄1倍)然后计算剩余部分的凸包。请参见

    另一种方法是删除不属于长方体的细线(例如,通过缩小图像,因为这些线看起来比长方体侧面薄1倍),然后计算剩余部分的凸包。请看

    我会试试看我会试试看有人能解释我为什么被否决吗?我的问题是否不清楚或提出了太多问题?有人能解释我为什么被否决吗?我的问题是不清楚还是提出了太多的问题?这很有创意。谢谢,我会试试的,很有创意。谢谢,我会试试的
     tempCandidate.push_back(cv::minAreaRect(cv::Mat(contours[i])));