图像的颜色空间变换
一 颜色空间变换
当前版本的opencv颜色空间变换函数有274种,可以使用如下方法获取:
1 list_colorspace = [i for i in dir(cv2) if i.startswith('COLOR_')] 2 print("len(list_colorspace) = ", len(list_colorspace))
但常用的一般只有两个COLOR_BGR2GRAY和COLOR_BGR2HSV。
HSV颜色空间像素值范围,H:[0, 179],S:[0, 255],V:[0,255];其中H指色调,S饱和度,V亮度。
下面用HSV颜色空间进行目标提取,这里提取出蓝色目标,代码与结果如下:
import cv2 import numpy as np def cv_show(img): cv2.imshow("Images", img) cv2.waitKey(0) cv2.destroyAllWindows() img_color = cv2.imread("./3color.png", cv2.IMREAD_COLOR) img_color = cv2.resize(img_color, (300,300)) # BGR转HSV img_hsv = cv2.cvtColor(img_color, cv2.COLOR_BGR2HSV) # 设定颜色范围 lower_blue = np.array([90,50,50]) upper_blue = np.array([120, 255, 255]) # 提取指定颜色范围mask img_mask = cv2.inRange(img_hsv, lower_blue, upper_blue) # 目标提取 img_obj = cv2.bitwise_and(img_color, img_color, mask=img_mask) cv_show(img_obj) # 颜色范围确定, 先获取纯色的hsv值,然后对下界在该值基础上变小, 上界只对色调进行适当提高就可以了。 if 1: blue = np.uint8([[[255, 0, 0]]]) # 相当于单个像素的图像 hsv_blue = cv2.cvtColor(blue, cv2.COLOR_BGR2HSV) print("hsv_blue = ", hsv_blue
)




浙公网安备 33010602011771号