您如何在 OpenCV 上使用 HSL 保持亮度阈值?

Min*_*Cht 3 python hsl opencv colors image-processing

我正在处理一个需要检测白色颜色的项目,经过一些研究,我决定使用隐蔽的 RGB 图像到 HSL 图像,并保持亮度以获得白色,我正在使用 openCV,所以想知道是否有办法去做吧。 在此处输入图片说明

api*_*i55 7

您可以通过 4 个简单的步骤来完成:

转换 HLS

img = cv2.imread("HLS.png")
imgHLS = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)
Run Code Online (Sandbox Code Playgroud)

获取L通道

Lchannel = imgHLS[:,:,1]
Run Code Online (Sandbox Code Playgroud)

创建蒙版

#change 250 to lower numbers to include more values as "white"
mask = cv2.inRange(Lchannel, 250, 255)
Run Code Online (Sandbox Code Playgroud)

将蒙版应用到原始图像

res = cv2.bitwise_and(img,img, mask= mask)
Run Code Online (Sandbox Code Playgroud)

这也取决于什么是白色的,您可以更改值:) 我在 L 通道中使用了 inRange 但您可以保存一步并执行

mask = cv2.inRange(imgHLS, np.array([0,250,0]), np.array([255,255,255]))
Run Code Online (Sandbox Code Playgroud)

而不是行:

Lchannel = imgHLS[:,:,1]
mask = cv2.inRange(Lchannel, 250, 255)
Run Code Online (Sandbox Code Playgroud)

它更短,但我首先以另一种方式做,以使其更明确并展示我在做什么。

图片:

在此处输入图片说明

结果:

在此处输入图片说明

结果看起来几乎像掩码(几乎是二进制的),但根据你的下限(我选择了 250),你甚至可能会得到一些几乎是白色的颜色。