Python 之HSV颜色识别
- 前言
- 一、HSV颜色模型
- 二、黄色识别
- 三、使用步骤
-
- 总结
前言
汽车自动驾驶,需要颜色识别,如黄色/红色车道线,蓝色车牌。
本文从HSV颜色模型出发,提供一种识别黄色车道线的方法供参考。
一、HSV颜色模型
HSV颜色模型的参数分别是色调(Hue)、饱和度(Saturation)和明度(Value)。
二、黄色识别
以24色卡为例,识别其中黄色色块。
以下是部分颜色的范围:
H:0-180
S:0-255
V:0-255
三、使用步骤
1.引入库
代码如下 :
import cv2
import numpy as np
import matplotlib.pyplot as plt
2.处理图片
代码如下 :
# read image
img=cv2.imread('colorchecker.jpg')
# median filter
img=cv2.medianBlur(img,7)
cv2.namedWindow("HSV")
# HSV Color Space
HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
cv2.imshow('HSV', HSV)
H, S, V = cv2.split(HSV)
# Color threshold
lower_red = np.array([26, 43, 46])
upper_red = np.array([34, 255, 255])
mask = cv2.inRange(HSV, lower_red, upper_red)
mask=cv2.medianBlur(mask,5)
maskAnd = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow('maskAnd', maskAnd)
# show
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
maskAnd= cv2.cvtColor(maskAnd, cv2.COLOR_BGR2RGB)
plt.subplot(121),plt.imshow(imgRGB)
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(maskAnd)
plt.title('ImageYellow'), plt.xticks([]), plt.yticks([])
plt.show()
cv2.waitKey(0)
cv2.destroyAllWindows()
3.识别结果
总结
本文仅简单介绍了OpenCV中HSV在颜色识别的使用, 实际应用中会有边缘毛刺等,要结合中值滤波预处理;
同时需要大量模型数据统计,进行色彩阈值微调,才能满足色彩识别需求。