用opencv python填充轮廓

新手上路,请多包涵

我有使用以下方法创建的折线的二进制图像:

 cv2.polylines(binaryImage,contours,1, (255,255,255))

我现在需要的是填充所有折线的有效方法。我在opencv中没有找到这种方法,但也许它存在。或者,也许我可以实现算法来完成这项工作(但速度很快——我有高清图片)。请分享你的想法..

原文由 user2233244 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 640
1 个回答

我知道 OP 询问了关于使用 OpenCV 的具体问题,但我最终只是试图填充我拥有的分割多边形(此外,OpenCV 对我的情况来说有点问题)库,我相信许多其他用户也这样做了,所以这是我使用 scikit imagepolygon 函数 的解决方案。

从文档:

 import matplotlib.pyplot as plt

from skimage.draw import line, polygon, circle, ellipse
import numpy as np

img = np.zeros((500, 500, 3), 'uint8')

# draw line
rr, cc = line(120, 123, 20, 400)
img[rr,cc,0] = 255

# fill polygon
poly = np.array((
    (300, 300),
    (480, 320),
    (380, 430),
    (220, 590),
    (300, 300),
))
rr, cc = polygon(poly[:,0], poly[:,1], img.shape)
img[rr,cc,1] = 255

# fill circle
rr, cc = circle(200, 200, 100, img.shape)
img[rr,cc,:] = (255, 255, 0)

# fill ellipse
rr, cc = ellipse(300, 300, 100, 200, img.shape)
img[rr,cc,2] = 255

plt.imshow(img)
plt.show()

结果: 填充多边形

原文由 Gabriel Ziegler 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题