我正在处理一个需要检测白色的项目,经过一些研究,我决定将 RGB 图像转换为 HSL 图像,并通过阈值法来获取白色。我使用的是 openCV,想知道是否有方法可以做到这一点。
在此处输入图片描述我正在处理一个需要检测白色的项目,经过一些研究,我决定将 RGB 图像转换为 HSL 图像,并通过阈值法来获取白色。我使用的是 openCV,想知道是否有方法可以做到这一点。
在此处输入图片描述您只需要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),您可能会得到一些几乎白色的颜色。