如何使用opencv和python删除圆的外部区域

2024-09-29 23:30:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我要把圆圈的外部区域去掉。在

我只需要使用圆的内部区域,以避免图像处理中的错误,目前我只能找到圆并标记它

我不知道我是不是做对了,使用cv2.circle

请帮帮我

circles = cv2.HoughCircles(cinza, cv2.HOUGH_GRADIENT, 1, 20)

if circles is not None:
    maior = 0
    circles = np.uint16(np.around(circles))

    for i in circles[0, :]:
         radius = i[2]
         if radius > maior:
            maior = radius

    for i in circles[0, :]:
        center = (i[0], i[1])
        radius = i[2]
        if radius == maior:
            cv2.circle(image, center, 1, (0, 100, 100), 3)
            cv2.circle(image, center, radius, (255, 0, 255), 3)

Tags: inimage区域forif错误npcv2
2条回答

您可以使用OpenCV的mask函数。在这个链接中,您可以看到c++上的mask函数,我在官方页面上找不到Python函数,但是there是Python上OpenCV屏蔽的代码。在

总之,您可以通过OpenCV mask函数来遮罩圆的外部尺寸,以删除圆的外部区域。在

首先使用numpy meshgrid得到一个包含图像索引的x和y矩阵。然后计算指数到圆心的距离,从指数矩阵中减去质心,分别计算x和y。在

然后使用

distances = (x**2 + y**2)**0.5

xyimage和{}现在必须具有相同的形状。在

然后使用距离矩阵上的boolean indexing来选取圆内的像素,并将其设置为零

^{pr2}$

相关问题 更多 >

    热门问题