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);
对于这个例子来说,这似乎是可行的,但我要处理的是更嘈杂的图像
提前感谢我建议在轮廓图片上使用线检测算法,如Hough变换。这将为您提供一组线,然后您可以在比单个轮廓像素更高的级别上对其进行分析(例如,通过查看线交点簇等)。我建议在轮廓图片上使用线检测算法,如Hough变换。这将为您提供一组线,然后您可以在比单个轮廓像素更高的级别上对其进行分析(例如,通过查看线交点簇等)。另一种方法是删除不属于长方体的细线(例如,通过缩小图像比例,因为线看起来比长方体侧面薄1倍)然后计算剩余部分的凸包。请参见另一种方法是删除不属于长方体的细线(例如,通过缩小图像,因为这些线看起来比长方体侧面薄1倍),然后计算剩余部分的凸包。请看我会试试看我会试试看有人能解释我为什么被否决吗?我的问题是否不清楚或提出了太多问题?有人能解释我为什么被否决吗?我的问题是不清楚还是提出了太多的问题?这很有创意。谢谢,我会试试的,很有创意。谢谢,我会试试的
tempCandidate.push_back(cv::minAreaRect(cv::Mat(contours[i])));