问题描述
如下图所示,需要读取图像并为每个遮罩进行颜色更改。
我想到先使用imageWithMask = cv2.bitwise_not(image)
我认为他们是这样做的两种方法 一幅将图像分成两幅并更改颜色 另一种是使用阈值并转换我不了解的阈值,以寻求帮助。
解决方法
## Read
img = cv2.imread("your_image_path.jpg")
## convert to hsv
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
## mask of lower red (0,50,50) ~ (10,255,255)
mask1 = cv2.inRange(hsv,(0,50),(10,255))
## mask of upper red (170,50) ~ (180,255)
mask2 = cv2.inRange(hsv,(170,(180,255))
## final mask and masked
mask = cv2.bitwise_or(mask1,mask2)
## target = cv2.bitwise_and(img,img,mask=mask)
inverseGrayImage = numpy.uint8(255) - mask;
plt.imshow(inverseGrayImage,cmap='gray')
cv2.imwrite("result.jpg",inverseGrayImage)