读取图像并进行颜色更改使用Image或openCVPython

问题描述

如下图所示,需要读取图像并为每个遮罩进行颜色更改。

Should convert the red into a black background and the cut out shape into white

我想到先使用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)