我正在尝试检测图像中的弧线。我确定的信息是弧的半径。我可以尝试并且可能得到我想要识别的弧的圆心。
Open CV中是否有任何算法可以告诉我们检测到的轮廓(或来自canny边缘的边是圆弧或弧的近似值)
有关如何使用Python或甚至一般方法在OpenCV中实现这一点的任何帮助都会非常有帮助
由于
答案 0 :(得分:1)
如果您认为形状没有任何变化(我的意思是圆弧不会变成直线或类似的东西)那么您可以看一下 Generalized Hough Transform (GHT)
可以检测出你想要的任何形状。
缺点:
对于GHT,openCV库没有直接的功能,但你可以在互联网上获得几个源代码。
有时速度很慢但如果正确设置参数会变快。
无法检测形状是否发生变化。例如,我试图使用GHT检测方块,但是我得到了很好的结果但是当方形不是完美的方块(即矩形或类似的东西)时,它没有检测到。
答案 1 :(得分:0)
你可以这样做:
每次从二值化图像中选择6个点并尝试适合时,您可以尝试使用RANSAC来提高速度。
答案 2 :(得分:0)
我的数学很生疏,但是...
如何通过在轮廓的复合边缘节点上循环并找到边缘之间的角度变化不快且符号不变的轮廓来评估轮廓呢?
一个角度链(θ),其中:
0 <θ i <θ max
具有边数( c ),其中:
c> d const
将表示以下内容的弧线:
半径∝ 1 /(θ i +θ i + 1 + ... +θ n )/ n)
或:
r ∝ 1 /θ ave
和:
arclenth ∝ c
在Get angle from OpenCV Canny edge detector中讨论了找到这些角度的方法