![计算机视觉应用与实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/543/44819543/b_44819543.jpg)
1.2 图像读取
1.2.1 使用OpenCV读取图像
在OpenCV中,可以使用cv2.imread(filename,flags)函数来读取图像。图像应该存储在工作目录中或给出图像的完整路径。
第一个参数filename是图像地址,即使图像路径错误,也不会引发任何错误,但是在打印图像时系统会给出None。
第二个参数flags是一个标志,指定了读取图像的方式。
·cv2.IMREAD_COLOR:加载彩色图。任何图像的透明度都会被忽视,它是默认参数值,可以用1代替。
·cv2.IMREAD_GRAYSCALE:以灰度模式(黑白图像)加载图像,可以用0代替。
·cv2.IMREAD_UNCHANGED:加载图像,包括alpha通道,可以用-1代替。
该函数的返回值是图像数字矩阵,维度如下。
·(M,N):用于灰度图。
·(M,N,3):用于RGB彩色图。
使用cv2.cvtColor(img,color_change)函数对颜色维度进行转换。
第一个参数img是图像对象。
第二个参数color_change是cv2.COLOR_BGR2GRAY(OpenCV定义的常数),用来将BGR通道彩色图转换为灰度图。
该函数返回修改后的图像数字矩阵。
1.2.2 使用Matplotlib读取图像
在Matplotlib中,可以使用matplotlib.pyplot.imread(fname,format=None)函数来读取图像。
其中,fname是图像路径;format是图像格式,默认值是None。如果没有提供图像格式,则imread()函数会从fname中提取图像格式。
该函数的返回值是图像数字矩阵,维度如下。
·(M,N):用于灰度图。
·(M,N,3):用于RGB彩色图。
1.2.3 案例实现——使用OpenCV读取图像
1.实验目标
(1)读取单通道灰度图。
(2)读取三通道彩色图。
(3)将彩色图转换为灰度图。
2.实验环境
实验环境如表1.3所示。
表1.3 实验环境
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_26_1.jpg?sign=1739608543-ySnTT6qh9XhV2UshuYJB9SUsZgpl4ehv-0-2c1c1d70c8c3bc67ec11ceffbabb5d04)
3.实验步骤
创建源码文件test01_imread_opencv.py。
按照如下步骤编写代码。
步骤一:导入模块
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_1.jpg?sign=1739608543-NiquSmjpctZ8SPwSoma5wWGiMwnzPIwr-0-37812718e1364ea2ca56e859959ee4ba)
步骤二:读取单通道灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_2.jpg?sign=1739608543-Jm4s1l379hb6bIEYU6BYOLWs8AiPrWFR-0-a0b7c3b1c0f3aaf0bd1863c7062446ee)
步骤三:读取三通道彩色图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_3.jpg?sign=1739608543-P0489hVbksC5BNUsMXACCDP0T1WEu3jG-0-9f930ea93345659085a14c7af75936db)
步骤四:将彩色图转换为灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_4.jpg?sign=1739608543-38cYKQVfs5TsdGUeXdhvoU8QDjm2JXRU-0-6231d0412a3e358ffb82fa02d65e3bc9)
步骤五:运行实验代码
使用如下命令运行实验代码。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_5.jpg?sign=1739608543-LNUkdqp2syrvFykUkpfRnP1hLz1YfDkZ-0-94e0a070742d9c983a96c931f8ad30a7)
运行效果如图1.3~图1.5所示。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_1.jpg?sign=1739608543-60QvZ47bv1dQKDp7jEhbABnHrnlYxmQG-0-60bcca748d508fc3f9542ccae447aa39)
图1.3 单通道灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_2.jpg?sign=1739608543-Q0vDzopcjocXm1MfsScp8KpkKAgCPwpe-0-1d23f69492108902666e655a1e954d8b)
图1.4 三通道彩色图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_3.jpg?sign=1739608543-89bD5db2m0rVoOoozQTa7fDzxYTlH74F-0-f16328dc439d163ad8713c6489a585f9)
图1.5 将彩色图转换为灰度图
1.2.4 案例实现——使用Matplotlib读取图像
1.实验目标
使用Matplotlib读取图像,显示图像及其属性信息。
2.实验环境
实验环境如表1.4所示。
表1.4 实验环境
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_4.jpg?sign=1739608543-z0R1JOr3THEik13QMgYeAiV4W5Z6d1CO-0-8a25d0fafb0e0bb3ba11c6c5ad4eeb06)
3.实验步骤
创建源码文件test02_imread_matplotlib.py。
按照如下步骤编写代码。
步骤一:导入模块
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_1.jpg?sign=1739608543-QBYBtKdk8HVH8UV7eJC1AMPP1b3laG5s-0-478a28fc2dc8269dc2cb9fbcea2c7a34)
步骤二:读取图像
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_2.jpg?sign=1739608543-cHwOpexOzhTD3PyUY2SI007OXwMX2l9U-0-2a31508319873221da1e7538316ffc2f)
步骤三:运行实验代码
使用如下命令运行实验代码。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_3.jpg?sign=1739608543-DoQyvwpjmd3bRq3yRLxD2kUTpgVUVEzZ-0-836f28d1efce69dd438302a25dd8b152)
运行效果如图1.6所示。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_4.jpg?sign=1739608543-VzFxhoLxtWEz5FSpmdI4MkuGKVndoj2I-0-d3aaec520411c76c4849266b4a000d04)
图1.6 使用Matplotlib读取图像