Opencv 如何识别图像中的真实正方形

Opencv 如何识别图像中的真实正方形,opencv,pattern-recognition,perspective,Opencv,Pattern Recognition,Perspective,我使用OpenCV在图像中检测正方形。c的例子非常有帮助,但我的问题是,它几乎可以识别所有具有接近90度的4个角的物体 然而,我的目标是从视频源中仅识别图像中的真实方块。这意味着对象本身有4条具有相同长度和4个90度角的边。起初这听起来很容易,但由于图像中的对象可能会倾斜,因此角度可能在45到135度之间变化,并且边缘的长度不同。如果我检查这些属性,尽管我仍然识别出不是正方形的矩形 几天来,我一直在考虑一个好的解决方案,只识别真正的正方形,但我想到的一切仍然有缺陷。我想知道你们中是否有人知道角的

我使用OpenCV在图像中检测正方形。c的例子非常有帮助,但我的问题是,它几乎可以识别所有具有接近90度的4个角的物体

然而,我的目标是从视频源中仅识别图像中的真实方块。这意味着对象本身有4条具有相同长度和4个90度角的边。起初这听起来很容易,但由于图像中的对象可能会倾斜,因此角度可能在45到135度之间变化,并且边缘的长度不同。如果我检查这些属性,尽管我仍然识别出不是正方形的矩形

几天来,我一直在考虑一个好的解决方案,只识别真正的正方形,但我想到的一切仍然有缺陷。我想知道你们中是否有人知道角的角度和边的长度之间的确切关系。到目前为止,我的猜测已经走得很远了,但有时会出现我不想识别的随机方块。我真的认为有一些数学关系,但我真的找不到透视图中正方形的公式


任何帮助都将不胜感激

没有任何参考坐标系,这怎么可能?如果您是基于视频源进行识别,是否可以通过始终将正方形保持在视野中来教会您正方形的外观?也许你可以用这个来计算出3个空间中的旋转,然后你必须将它应用到提要中的所有其他内容。

不,这不是我的选择:我认为这是可能的。目前,我可以将其缩小到识别正方形的范围。然而,问题是像A4纸这样的东西看起来很像一个倾斜的正方形。然而,我能够用我的眼睛识别出两者的角度之间的某种差异。纸张的角度接近90度,而正方形的角度大约为70度和110度。我的问题是我看不出角度和边缘长度之间的正确关系。我不知道如何解决你的问题,但我想我理解你现在说的。基本上,即使没有任何类型的参考坐标系,由于角度和边长的关系,仍然可以排除非正方形。如果你把一个梯形作为最简单的例子,这个梯形只有在满足了边和角之间非常特殊的关系的情况下才可能是正方形。这正是我的想法:但这里是我的两个问题。我不确定可能角度的分辨率是否足以确定这一点。我还没有找到透视变换背后的实际数学。目前我使用的是:接近90度的角度->允许边缘长度之间的微小变化。大角度->允许较少的变化。这是可行的,但如果能做得更准确,我们将不胜感激。也许有更深入的知识的人可以帮我解决这个问题。好吧,可能角度的分辨率是你在继续之前应该确定的,我想这还不错。如果你创建了两个已知角度的参考图像,你就会知道你的局限性是什么。