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

标签 python opencv image-processing colors hsl

我正在做一个项目,需要白色检测,经过一番研究,我决定使用隐藏的 RGB 图像到 HSL 图像,并阈值保持亮度以获得白色,我正在使用 openCV,所以想知道是否有是一种方法。 enter image description here

最佳答案

只需 4 个简单步骤即可完成:

转换 HLS

img = cv2.imread("HLS.png")
imgHLS = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)

获取L channel

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 channel 中使用了 inRange,但你可以节省一步并执行

mask = cv2.inRange(imgHLS, np.array([0,250,0]), np.array([255,255,255]))

而不是行:

Lchannel = imgHLS[:,:,1]
mask = cv2.inRange(Lchannel, 250, 255)

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

图片:

enter image description here

结果:

enter image description here

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

关于python - 如何在 OpenCV 上使用 HSL 保持亮度阈值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48182791/

相关文章:

python - 如何在 Python 中交换输入的第一个和最后一个字符

c++ - 如何使用opencv在图像上产生眩光

android - 将视频保存为输入而不是 android 中的相机

python - 如何识别带有彩色背景图像的文本?

python - 使用python从图像中过滤掉小网格线

python - 如何从python中的类返回列表的长度

Python - 如何提高小数的准确性?

python - Opencv:检测 FFT 上最亮的线

android - 通过蓝牙将图像从arduino发送到android

python - 在迭代期间在列表中插入元素