C++ 用OpenCV检测边缘图像中的矩形

C++ 用OpenCV检测边缘图像中的矩形,c++,image,opencv,image-processing,hough-transform,C++,Image,Opencv,Image Processing,Hough Transform,我想在图像中检测多个(相似的)矩形对象,这些对象中有很多子结构。因此,我目前的计划是使用高斯模糊、形态学和边缘检测(Canny)。使用边缘检测后,我得到以下结果(阈值参数非常低): 最后我想要的是大矩形的轮廓。见: 目前,我试图通过使用HoughLines和findContours来实现这一点。为了让它工作,我需要大量修改Canny和HoughLines的阈值参数 当我对一幅图像进行正确处理时,参数很可能对下一幅图像不起作用(例如,前一幅图像中的边缘不太占优势,导致hough变换检测到太多线)。

我想在图像中检测多个(相似的)矩形对象,这些对象中有很多子结构。因此,我目前的计划是使用高斯模糊、形态学和边缘检测(
Canny
)。使用边缘检测后,我得到以下结果(阈值参数非常低):

最后我想要的是大矩形的轮廓。见:

目前,我试图通过使用
HoughLines
findContours
来实现这一点。为了让它工作,我需要大量修改
Canny
HoughLines
的阈值参数

当我对一幅图像进行正确处理时,参数很可能对下一幅图像不起作用(例如,前一幅图像中的边缘不太占优势,导致hough变换检测到太多线)。另一个问题是,有时内部结构与外部边缘的一侧具有相同或更少的优势

我试图使用一个更强烈的模糊或形态学,但在某一点上,这模糊了矩形之间的小间隙

我是否可以在给定边缘图像的情况下提取较大的矩形(最好使用opencv)?
获得4个角点就足够了。

您可以发布原始图像吗?您应该尝试使用DOG-Difference of GaussianIs来检测轮廓,您可以尝试使用固定矩形的大小(或至少相对稳定)?您知道
approxPolyDP
匹配形状
函数吗?p、 在美国张贴你的代码,因为没有它,人们只能猜测到目前为止,关于什么是或是没有遗漏在那里。