8.1 加载图像
问题描述
为了对图像进行预处理,需要将其载入程序中。
解决方案
使用OpenCV的imread方法:
讨论
从本质上说,图像也是数据,而且调用imread方法时,程序会将图像数据转换为我们非常熟悉的数据类型—— NumPy数组:
我们已经把这张图像转换成一个矩阵,矩阵中的元素与原图像中的像素点一一对应。用下面的命令可以查看矩阵的值:
图像的分辨率是3600 × 2270,和矩阵的维度完全相同:
矩阵中的每个元素实际代表什么呢?对于灰度图像,矩阵元素的值代表对应像素的灰度值。灰度值在0(黑色)到255(白色)之间变化。例如,本节“解决方案”部分的图像中左上角像素点的灰度值为140:
在下面的矩阵中,每个元素包含三个值,分别对应蓝色、绿色和红色分量(BGR):
一个小提示:OpenCV默认使用BGR格式,但许多图像应用程序(包括Matplotlib)使用RGB格式(红绿蓝),也就是说,红色和蓝色分量的值对调了位置。要在Matplotlib中正确显示OpenCV彩色图像,需要先将颜色转换为RGB格式(抱歉,在黑白印刷的纸质图书中看不出图像有这样的差别):
延伸阅读
●《RGB和BGR的区别》(http://bit.ly/2Fws76E)
● RGB色彩模型(http://bit.ly/2FxZjKZ)
本书评论