使用 OpenCV 从轮廓中获取掩码
Posted
技术标签:
【中文标题】使用 OpenCV 从轮廓中获取掩码【英文标题】:get mask from contour with OpenCV 【发布时间】:2015-11-30 20:00:18 【问题描述】:感谢 cv.findContours,我想从轮廓中获取图像蒙版(它仅存在 1 个轮廓)。
但是,虽然我的轮廓变量不为空,但我无法使用 cv.drawContours 检索图像蒙版,我的目标图像始终为空。
这是我的代码:
img = mosaicImage[:,:,0].astype('uint8')
contours, _ = cv.findContours(img.copy(), cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
mask = np.zeros(img.shape, np.uint8)
cv.drawContours(mask, contours, -1, (0,255,0),1)
希望你能帮上忙!
谢谢
【问题讨论】:
掩码为单通道。您尝试设置通道 2... 尝试 cv.drawContours(mask, contours, -1, (255),1) 如果要创建蒙版,是否要填充轮廓?您可以通过将 drawContours 的最后一个参数从 1 更改为 -1 来做到这一点 【参考方案1】:您正在为蒙版设置颜色 (0,255,0),但蒙版是单通道,因此您使用颜色 0 绘制轮廓。
试试
cv.drawContours(mask, contours, -1, (255),1)
或
cv.drawContours(mask, contours, -1, (255,255,255),1)
【讨论】:
以上是关于使用 OpenCV 从轮廓中获取掩码的主要内容,如果未能解决你的问题,请参考以下文章