为了账号安全,请及时绑定邮箱和手机立即绑定

在opencv中检测半圆

在opencv中检测半圆

在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), :]


查看完整回答
反对 回复 2019-08-08
  • 3 回答
  • 0 关注
  • 1847 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信