import cv2 as cv
import numpy as np
filename = 'C:/Users/45450/Desktop/lenna.jpg'
img = cv.imread(filename)
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('source image', img)
cv.imshow('gray', gray)
cv.waitKey()
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
cv.imshow('Hue', hsv[:, :, 0])
cv.imshow('Saturation', hsv[:, :, 1])
cv.imshow('Value', hsv[:, :, 2])
cv.waitKey()
cv.imshow('blue', img[:, :, 0])
cv.imshow('Green', img[:, :, 1])
cv.imshow('Red', img[:, :, 2])
cv.waitKey()
cv.destroyAllWindows()
OpenCV中,系统图像缺省为BGR格式,颜色三通道顺序为B,G,R 分别对应索引为0,1,2
HSI/HSV颜色空间:
H的取值范围为0-180。其中红色对应0 绿色对应60 蓝色对应120 相对于H通道显示的时候,蓝色显示出来最亮。
其余两变量范围为0-255。 S为饱和度分量,看这个颜色是否足够饱和 越饱和显示的颜色越亮。
HSV中V指RGB里最大的值 V=max(r, g, b) 最终显示出来的是饱和度最大值 (存在疑惑)
HSI中I指平均值 I=(r+g+b)/3
BGR三通道显示时,例如B--Blue 则蓝色部分显示出来的最亮,最亮为白色。
原图像中白色在单通道显示是也为白色 ,因为白色包含BGR。