图像的颜色空间变换

 

一 颜色空间变换

当前版本的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
)

 

 

 

 

 

 

posted @ 2022-05-19 18:20  IllidanStormrage  阅读(161)  评论(0)    收藏  举报