图像2矩阵
数字图像的本质是矩阵,一个数字图像就是一个二维矩阵,矩阵中的每个元素代表图像的一个像素。
对于灰度图像来说,这个像素只有一个灰度值,英文是intensity,由8个bit来表示,每个像素的灰度值为0~255中的一个值;
对于彩色图像来说,计算机采用三原色,即RGB模式,每个像素由R、G、B三个值确定,也就是说对于彩色图像的每个像素,都是一个包含三个元素的一维数组来表示,每个像素对应的一维数组里面的三个元素分别代表B、G、R三个分量的值(0~255),这里要注意顺序,依次是B、G、R。
秉承Linus的理念“Talk is cheap, show me the code”,下面进行代码举例:
有一副原始图片rafa.jpg:
代码1,显示图片,并显示图像形状的信息
1 import cv2 2 import numpy as np 3 4 img = cv2.imread('rafa.jpg') 5 6 print(img.shape) #看看图片的shape 7 cv2.namedWindow('Rafa') 8 cv2.imshow('Rafa',img) 9 10 cv2.waitKey() 11 cv2.destroyAllWindows()
运行代码,输出为:
(200, 140, 3)
这表明,这幅图片,高度是200像素,宽度是140像素,有3个通道。
下面,我们把该图片层层解剖:
分别观察R、G、B三个通道的图片:
BGRA四通道
YUV、HSL色彩模型