你如何在 OpenCV 上使用 HSL 保持亮度阈值?
How do you lightness thresh hold with HSL on OpenCV?
我正在处理一个需要白色检测的项目,经过一些研究我决定使用隐蔽的 RGB 图像到 HSL 图像并通过阈值保持亮度以获得白色,我正在使用 openCV,所以想知道如果有办法的话。
enter image description here
只需 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),你甚至可能得到一些几乎是白色的颜色。
我正在处理一个需要白色检测的项目,经过一些研究我决定使用隐蔽的 RGB 图像到 HSL 图像并通过阈值保持亮度以获得白色,我正在使用 openCV,所以想知道如果有办法的话。 enter image description here
只需 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),你甚至可能得到一些几乎是白色的颜色。