python - 在最终图像上应用轮廓蒙版
问题描述
在尝试从背景中分割植物时,我遇到了一个问题在按色调值创建蒙版并在其上使用关闭和打开运算符后,我遇到了以下情况:
在此之后,我想删除图像边缘的小块,我通过以下操作做到了这一点:
_, cont, heir = cv2.findContours(mask_final, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
contour_sizes = [cv2.contourArea(contour) for contour in cont]
for con, size in zip(cont, contour_sizes):
if size > 5000:
mask_final = cv2.drawContours(mask_final, [con], -1, (255, 255, 255), cv2.FILLED)
应用此功能时,斑点已被移除,但应用时:
final = cv2.bitwise_and(img_rgb,img_rgb, mask = mask_final)
我得到以下结果:
可以看出,蒙版没有正确应用在图像上,有人知道为什么会这样吗?
解决方案
不要使用mask_final
incv2.drawContours
函数,而是创建一个mask
与原始图像相同形状的新图像,并执行以下操作:
mask = np.zeros(img.shape, np.uint8)
for con, size in zip(contours, contour_sizes):
if size > 5000:
mask = cv2.drawContours(mask, [con], -1, (255, 255, 255), cv2.FILLED)
final = cv2.bitwise_and(img_rgb, img_rgb, mask = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY))
推荐阅读
- python - 在python上合并数据框
- php - 自动检测用户何时验证电子邮件
- r - R中的特殊字符奇怪的行为
- perl - Perl:将哈希与包含相同密钥的密钥组合在一起
- javascript - Filterout empty value from objects
- android - NotificationListenerService 需要在每次启动时切换通知访问才能工作
- automapper - Automapper Compile Mappings asp.net core
- java - REST API to get Amazon reviews?
- python - Read MHTML file
- macos - Can I use MacOS tccutil to reset ScreenRecording permissions for a daemon that has no bundleID?