Python 利用hough变换检测三角形

Python 利用hough变换检测三角形,python,geometry,computer-vision,hough-transform,Python,Geometry,Computer Vision,Hough Transform,如何在图像中检测三角形(已知形状)。环境整洁,几乎没有其他物体。这里有一个例子 我研究了hough变换,使用HoughLines来检测线条,然后使用一些简单的python逻辑来尝试从中生成三角形。这导致了大量的噪音,几乎不可能找到正确的三角形 你会怎么做 你试过使用对比度吗?如果上面的图像是一个代表性的例子,那么从白色到黑色再到绿色的对比度是一个非常独特的特征。确保在应用边缘检测之前对图像设置阈值 您还可以尝试将从对比中找到的线映射到您想要的特定大小的三角形(我注意到您提到了映射到三角形,但没有

如何在图像中检测三角形(已知形状)。环境整洁,几乎没有其他物体。这里有一个例子

我研究了hough变换,使用HoughLines来检测线条,然后使用一些简单的python逻辑来尝试从中生成三角形。这导致了大量的噪音,几乎不可能找到正确的三角形


你会怎么做

你试过使用对比度吗?如果上面的图像是一个代表性的例子,那么从白色到黑色再到绿色的对比度是一个非常独特的特征。确保在应用边缘检测之前对图像设置阈值

您还可以尝试将从对比中找到的线映射到您想要的特定大小的三角形(我注意到您提到了映射到三角形,但没有提到使用大小)。但是请注意,大小约束将受摄影机与对象的距离的影响


此外,如果您完全控制要检测的对象(因为看起来您正在使用它来检测您自己制作的东西),您可以在三角形中添加其他形状,或者添加更多对比度层。完整的圆圈是一种很好的形状(因为大多数噪音不会有完整的循环)

我尝试过使用颜色信息(通过尝试最小化目标颜色和三角形检测的平均颜色之间的距离。这些都是好主意。我想我会尝试将许多相似的三角形嵌套在一起,以消除噪声。PS。为什么在边缘检测之前对图像设置阈值?对图像设置阈值是使用对比度的方法r优势。尝试在自己的函数中使用对比度要比简单地对某一点进行二元阈值化(这对应用程序有好处)困难得多。请查看阈值滑块示例,了解我的意思;它将使三角形在一定阈值下几乎自身脱颖而出,从而呈现出最大的效果然后你可以对剩下的部分进行边缘检测。这也意味着你不需要对三角形做太多的修改