【Python 之HSV颜色识别】

Python 之HSV颜色识别

  • 前言
  • 一、HSV颜色模型
  • 二、黄色识别
  • 三、使用步骤
    • 1.引入库
    • 2.处理图片
    • 3.识别结果
  • 总结


前言

汽车自动驾驶,需要颜色识别,如黄色/红色车道线,蓝色车牌。
本文从HSV颜色模型出发,提供一种识别黄色车道线的方法供参考。

一、HSV颜色模型

HSV颜色模型的参数分别是色调(Hue)、饱和度(Saturation)和明度(Value)。

【Python 之HSV颜色识别】_第1张图片

二、黄色识别

以24色卡为例,识别其中黄色色块。
以下是部分颜色的范围:
H:0-180
S:0-255
V:0-255

【Python 之HSV颜色识别】_第2张图片

三、使用步骤

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.识别结果

【Python 之HSV颜色识别】_第3张图片


总结

本文仅简单介绍了OpenCV中HSV在颜色识别的使用,	实际应用中会有边缘毛刺等,要结合中值滤波预处理;
同时需要大量模型数据统计,进行色彩阈值微调,才能满足色彩识别需求。

你可能感兴趣的:(python,opencv)