我想把蒙版颜色从白色换成其他颜色,比如红色.我试过:
image1 = cv2.imread('image1.png',0) light_color = 100 dark_color = 200 mask_1 = cv2.inRange(image1, light_color, dark_color) cv2.imshow('mask_1', mask_1) cv2.waitKey(0) cv2.destroyAllWindows()
代码给出白色面具。如何更改代码以给予红色面具?多谢了。
ldxq2e6h1#
cv2.inRange返回一个单通道图像,其值为0或255。为了将其更改为红色像素的图像,原始蒙版为255,您可以使用cv2.cvtColor转换为3通道(BGR是opencv的默认值),然后使用numpy的np.where将白色像素更改为例如。红色(或其他颜色):
cv2.inRange
cv2.cvtColor
np.where
import cv2 import numpy as np # ... mask_1_bgr = cv2.cvtColor(mask_1, cv2.COLOR_GRAY2BGR) mask_1_bgr[np.where((mask_1_bgr==[255, 255, 255]).all(axis=2))] = (0, 0, 255) cv2.imshow('mask_1_bgr', mask_1_bgr)
您也可以通过再次使用原始蒙版进行颜色更改(不使用np.where)来执行此操作:
import cv2 # ... mask_1_bgr = cv2.cvtColor(mask_1, cv2.COLOR_GRAY2BGR) mask_1_bgr[mask_1==255] = (0,0,255) cv2.imshow('mask_1_bgr', mask_1_bgr)
注意由于图像是BGR,红色用(0,0,255)表示。
1条答案
按热度按时间ldxq2e6h1#
cv2.inRange
返回一个单通道图像,其值为0或255。为了将其更改为红色像素的图像,原始蒙版为255,您可以使用
cv2.cvtColor
转换为3通道(BGR是opencv的默认值),然后使用numpy的np.where
将白色像素更改为例如。红色(或其他颜色):您也可以通过再次使用原始蒙版进行颜色更改(不使用
np.where
)来执行此操作:注意由于图像是BGR,红色用(0,0,255)表示。