有一个项目即时工作,需要进行颜色白色检测,经过一些研究,我决定使用隐蔽的RGB图像到HSL图像并打扫亮度使颜色变白,我正在使用openCV,所以想知道是否有是一种方法。 enter image description here
答案 0 :(得分:2)
您可以通过4个简单步骤完成:
转换HLS
img = cv2.imread("HLS.png")
imgHLS = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)
获取L频道
Lchannel = imgHLS[:,:,1]
创建面具
#change 250 to lower numbers to include more values as "white"
mask = cv2.inRange(Lchannel, 250, 255)
将蒙版应用于原始图像
res = cv2.bitwise_and(img,img, mask= mask)
这也取决于什么是白色,你可能会更改值:)我在L通道中使用了inRange但你可以保存一步并做
mask = cv2.inRange(imgHLS, np.array([0,250,0]), np.array([255,255,255]))
而不是行:
Lchannel = imgHLS[:,:,1]
mask = cv2.inRange(Lchannel, 250, 255)
它更短,但我先做了另一种方式,让它更明确,并展示我在做什么。
图像:
结果:
结果看起来几乎像面具(几乎是二进制),但根据你的下限(我选择了250),你可能会得到一些几乎是白色的颜色。