![计算机视觉应用与实战](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=1738866125-1IQ720byYcUuDORPIRp59oCFX6TkSHES-0-62731cb353d64e7354b5cf12f67a487b)
3.实验步骤
创建源码文件test01_imread_opencv.py。
按照如下步骤编写代码。
步骤一:导入模块
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_1.jpg?sign=1738866125-qlUFvK57tT1RoRIFBqKOs8Jzi0BS5t3d-0-f8f38249d9a844713a5529529a2f8f50)
步骤二:读取单通道灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_2.jpg?sign=1738866125-Neza8uli5JyPmEgdv2J6zmWm1JBTfXR7-0-821261f1a13645decbf84c7aeb41c2a2)
步骤三:读取三通道彩色图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_3.jpg?sign=1738866125-89eqDF0mdtAEZ8pRlW3zzQ61PcWsdBI6-0-192ddf612e9c200de0c494383ef2b95a)
步骤四:将彩色图转换为灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_4.jpg?sign=1738866125-nN6sf7dBnYjHiZewF0dHo759ZBF7D6EV-0-2aaf4b5a4d642ab461ffbe023f229bca)
步骤五:运行实验代码
使用如下命令运行实验代码。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_5.jpg?sign=1738866125-yLyNkckHmdu6D4D4CJ5jQStM20hihiOv-0-06e2849a13721937ee07306a7c2a6629)
运行效果如图1.3~图1.5所示。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_1.jpg?sign=1738866125-aKBfCyWxNXyZZOtH6aJfJwRd7Kk8aImV-0-27f15e2cd212bf13c4f8e86663acb055)
图1.3 单通道灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_2.jpg?sign=1738866125-pjSgWgnJkZ1IUnaF2iUbtnS4pu8CNxnh-0-92e3aafb6ed21499cee73c5b8df35507)
图1.4 三通道彩色图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_3.jpg?sign=1738866125-CxOGF9M9e0VrblkPncKWJGdRT11NNjUF-0-89fab643520636faa8cbd19d56e788ec)
图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=1738866125-AEEx2oaB0nVhLJctjVg1oYCB4XWijU89-0-d5630619ed73607774cc40bf5c2e2f15)
3.实验步骤
创建源码文件test02_imread_matplotlib.py。
按照如下步骤编写代码。
步骤一:导入模块
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_1.jpg?sign=1738866125-HlBvbqdTkiHosLEtXvS0vGYyOnqMccLC-0-b119a1a4197c5b0f04ac497f25c33d9f)
步骤二:读取图像
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_2.jpg?sign=1738866125-3R8iItDuBRZZh5Gd7P1eOqwL9sGTn7TQ-0-0d79a43e3493371edcc1b4319b066d58)
步骤三:运行实验代码
使用如下命令运行实验代码。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_3.jpg?sign=1738866125-tCvjwHgcoTeIXyFHQSxkG8WPZ0Yewip8-0-4fec622bf835ef2cd184e34815f6bba0)
运行效果如图1.6所示。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_4.jpg?sign=1738866125-gsr7BfAiUoUWbx0Fh9N0T3q1mXbMd8IV-0-72351cacdcbc6d18cb422692d57da282)
图1.6 使用Matplotlib读取图像