对于图像,我们要有一定的理解
对于我们的眼睛而言,图像就是图像。
但对于计算机而言,
在计算机的视觉中,无论是什么图像都只不过由像素点组成的
也就是程序中的高维的数组或是矩阵。
关于计算机显示图像的发展
刚开始是二值图像,也就是只有黑色和白色的图像。
图像对计算机而言就是矩阵,矩阵也就是像素点
计算机会将白色的像素点处理为“1”,黑色的处理为“0”。
也就是1二进制数表示1个像素点
因为二值图像只有黑白,后来就出现了灰度图像
计算机会把灰度处理为256个灰度级,用数值区间[0,255]来表示。
“0”为纯黑色,“255”表示纯白色。其余数值表示不同的灰度。
这样的图就可以显示出更多的细节。
此时,要8个二进制数表示1个像素点。[255,255]
到后来就有了彩色图像。人们发现所有颜色都可以通过“三原色”的不同配比得到。
“三原色”也就是红绿蓝。一般用R、G、B来表示它们。
OpenCV中,通道的顺序是BGR。
也就是说,我们可以用三条通道来表示三种颜色的灰度图像,然后在把他们合并起来。
就可以的到一张彩色图像。 [255,255,3] 3表示三条通道
图像本质上就是数组。
当然也要对色彩空间有一定的了解。
不同的模块显示的图像默认的色彩空间可能不一样。
比如opencv是BGR(蓝绿红)
matplotlib是RGB(红绿蓝)
所以要用不同模块来显示图像,如果不转换成该模块应默认的色彩空间,就可能会显示出同一张图片,但是色彩不同的情况。
opencv中可使用cv2.cvtColor(读取图像,色彩空间转换常数)
色彩空间转换常数:cv2.COLOR_BGR2RGB
BGR色彩空间转换为 RGB色彩空间。