首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从健康地区掩蔽感染区域?

如何从健康地区掩蔽感染区域?
EN

Stack Overflow用户
提问于 2021-05-19 03:22:07
回答 1查看 66关注 0票数 0
代码语言:javascript
复制
import cv2
import numpy as np

img =  cv2.imread('AFTER_5746.png')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# find the green color 
mask_green = cv2.inRange(hsv, (36,0,0), (86,255,255))
# find the brown color
mask_brown = cv2.inRange(hsv, (90, 60, 20), (30, 255, 200))
# find the yellow color in the leaf
mask_yellow = cv2.inRange(hsv, (14, 39, 64), (40, 255, 255))

# find any of the three colors(green or brown or yellow) in the image
mask = cv2.bitwise_or(mask_green, mask_brown)
mask = cv2.bitwise_or(mask, mask_yellow)

# Bitwise-AND mask and original image
res = cv2.bitwise_and(img,img, mask= mask)

cv2.imshow("original", img)
cv2.imshow("final image", res)
cv2.waitKey(0)
cv2.destroyAllWindows()

我使用HSV颜色图对图像进行分割,但是提取的叶子图像中的棕色区域总是会丢失,如下所示:

如何使mask_brown可见?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-19 04:39:22

你的棕色面罩是空的(没有白色)。你是怎么得到布朗的价值的?它们在OpenCV HSV中不包括棕色。您的棕色是在色调=0/180环绕过渡。OpenCV inRange()似乎不喜欢将160到20分别指定为较低的和较高的(没有分成两种褐变,一种是从160到180,另一种从0到20)。所以我只给了0到180来覆盖范围。不要走得太高(V),否则你会开始包括天空。

下面是在Python/OpenCV中适用于我的棕色颜色的选择。

输入:

代码语言:javascript
复制
import cv2
import numpy as np

img =  cv2.imread('AFTER_5746.png')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# find the green color 
mask_green = cv2.inRange(hsv, (36,0,0), (86,255,255))
# find the brown color
mask_brown = cv2.inRange(hsv, (0, 0, 0), (180, 255, 160))
# find the yellow color in the leaf
mask_yellow = cv2.inRange(hsv, (14, 39, 64), (40, 255, 255))

# find any of the three colors(green or brown or yellow) in the image
mask = cv2.bitwise_or(mask_green, mask_brown)
mask = cv2.bitwise_or(mask, mask_yellow)

# Bitwise-AND mask and original image
res = cv2.bitwise_and(img,img, mask= mask)

cv2.imshow("original", img)
cv2.imshow("mask_green", mask_green)
cv2.imshow("mask_brown", mask_brown)
cv2.imshow("mask_yellow", mask_yellow)
cv2.imshow("mask", mask)
cv2.imshow("final image", res)
cv2.waitKey(0)
cv2.destroyAllWindows()

我想这就是你想要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67596477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档