Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.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_Computer Vision - Fatal编程技术网

C++ 检测图像中矩形的最简单的“正确”方法是什么?

C++ 检测图像中矩形的最简单的“正确”方法是什么?,c++,opencv,computer-vision,C++,Opencv,Computer Vision,我正试图想出最好的方法来检测图像中的矩形 我最初的想法是使用for线,并选择两条线的组合,其中两条线在下部和上部由相同的两条线相交,但这是不够的 将a与Hough变换一起使用是否有效?在OpenCV发行版中签出/samples/c/squares.c。这个例子提供了一个方形检测器,这应该是一个很好的开始 我的答案也适用。我认为目前还没有一种简单而可靠的方法来检测图像中的矩形。您必须处理许多问题,例如矩形不是完全矩形,而是近似矩形、部分遮挡、灯光变化等 一个可能的方向是对图像进行分段,然后检查每个

我正试图想出最好的方法来检测图像中的矩形

我最初的想法是使用for线,并选择两条线的组合,其中两条线在下部和上部由相同的两条线相交,但这是不够的


将a与Hough变换一起使用是否有效?

在OpenCV发行版中签出/samples/c/squares.c。这个例子提供了一个方形检测器,这应该是一个很好的开始


我的答案也适用。

我认为目前还没有一种简单而可靠的方法来检测图像中的矩形。您必须处理许多问题,例如矩形不是完全矩形,而是近似矩形、部分遮挡、灯光变化等

一个可能的方向是对图像进行分段,然后检查每个分段与矩形的距离。由于您不能信任分割算法,因此可以使用不同的参数多次运行它

另一个方向是尝试将一个矩形参数化地拟合到图像上,这样沿轮廓的图像梯度大小将最大化


如果您选择使用参数化方法,请注意,虽然参数化矩形的简单方法是通过矩形的四个角的位置(即8个参数)来实现,但还有一些其他表示形式需要较少的参数

Hough的一个扩展可能很有用。

你说的不充分是指效率不高,对吗?这实际上取决于你的应用程序——除非你是为实时高清视频而做,Hough变换可能已经足够好了。对于一个简单的几何形状,Hough变换可以回答这些问题——对于像脸这样更复杂的东西,你是完全正确的。实际上我做了一些检测矩形的工作,我遇到了这些问题。显然,如果你使用合成图像,那么Hough方法将非常有效,但是如果你想在“野外”找到矩形,那么情况就完全不同了。