BGR色彩体系中的像素点矩阵存储如下图:
观察下面代码的运行结果:
import cv2
import numpy as np
img = np.zeros((2,2,3),dtype=np.uint8)
count = 1
for i in range(0,3):
for j in range(0,2):
for z in range(0,2):
count = count+1
img[z,j,i] = (z+1)*(j+1)*count
img_1 = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
print(img,'\n')
print(img_1)
运行结果:
[[[ 2 6 10]
[ 8 16 24]]
[[ 6 14 22]
[20 36 52]]]
[[[ 15 204 10]
[ 15 170 24]]
[[ 15 185 22]
[ 15 157 52]]]
img符合BGR色彩体系,
B G R
2 6 10 第一个像素点的三维内容
8 16 24 第二个
6 14 22 三
20 36 52 四
从运行结果可以看出,其中第一二个像素点为第一行,第三四个点为第二行。
HSV中每个像素点的内容也是三维的,包含H、S、V三个方面的数值。在HSV体系中规定H的范围为[0,360] 、S和V的范围是[0,1]。下面是HSV与BGR的转化公式:
其中,为了规范每个H、S、V值都是在[0,255]范围内,HSV图像像素点的H值在矩阵中由[0,360]转化为范围[0,180],H=h/2,这里的h由公式算得,V的范围转化为B、G、R中最大的值,S转化为s*255,这里的s由公式算得。
观察运行结果可得:HSV像素点在矩阵中的存储与BGR像素点存储方式相似
H S V
15 204 10 第一个点的三维内容
15 170 24 第二个
15 185 22 第三个
15 157 52 第四个
从运行结果可以看出,其中第一二个像素点为第一行,第三四个点为第二行