在opencv中检测半圆我试图检测图像中的完整圆圈和半圆我遵循下面提到的过程:过程图像(包括Canny边缘检测)查找轮廓并在空图像上绘制它们,以便我可以消除不需要的组件。(处理过的图像正是我想要的。)使用HoughCircles检测圆圈。这就是我得到的。我尝试改变HoughCircles中的参数,但结果不一致,因为它根据光线和图像中圆圈的位置而变化。我根据它的大小接受或拒绝一个圆圈。所以结果是不可接受的。此外,我还有一长串“可接受的”圈子,所以我需要在HoughCircle参数中留出一些余量。至于完整的圆圈,很容易 - 我可以简单地找到轮廓的“圆度”。问题是半圈!请在hough变换前找到编辑过的图像
3 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
我知道它有点晚了,但我使用了更简单的方法。从cv2.HoughCircles(...)
你得到圆的中心和直径(x,y,r)。因此,我只需浏览圆圈的所有中心点,然后检查它们是否远离图像边缘而不是直径。
这是我的代码:
height, width = img.shape[:2] #test top edge up = (circles[0, :, 0] - circles[0, :, 2]) >= 0 #test left edge left = (circles[0, :, 1] - circles[0, :, 2]) >= 0 #test right edge right = (circles[0, :, 0] + circles[0, :, 2]) <= width #test bottom edge down = (circles[0, :, 1] + circles[0, :, 2]) <= height circles = circles[:, (up & down & right & left), :]
添加回答
举报
0/150
提交
取消