opencv 如何将蒙版颜色从白色更改为其他颜色?

ecfdbz9o  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(157)

我想把蒙版颜色从白色换成其他颜色,比如红色.
我试过:

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()

代码给出白色面具。如何更改代码以给予红色面具?
多谢了。

ldxq2e6h

ldxq2e6h1#

cv2.inRange返回一个单通道图像,其值为0或255。
为了将其更改为红色像素的图像,原始蒙版为255,您可以使用cv2.cvtColor转换为3通道(BGR是opencv的默认值),然后使用numpy的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)表示。

相关问题