![计算机视觉应用与实战](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=1739591589-NzVL5MKjA3rvWbJCCaRrS7CAAPlJ4t8X-0-a1c2cdced16794fc5c864328ff3bf296)
3.实验步骤
创建源码文件test01_imread_opencv.py。
按照如下步骤编写代码。
步骤一:导入模块
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_1.jpg?sign=1739591589-jrQ6vUX30l4xu884CiPhdcO4bnWR0tIs-0-5d0e54eb18d739174aa6b61d5bf2bd5e)
步骤二:读取单通道灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_2.jpg?sign=1739591589-ZWrYi7DkhHEMR5ELD1HJOy9AE3WBsx7K-0-fa88a0a39da32ed0ba72f0e7530222a0)
步骤三:读取三通道彩色图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_3.jpg?sign=1739591589-4PI8ApZ5P32MfLFZRWzCixMeFIWIEJWx-0-b5b14cb56e9668e4f9993ff53dffbc48)
步骤四:将彩色图转换为灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_4.jpg?sign=1739591589-rQ0PeNylJL61ks89U19beOKkHwfgTPst-0-98705f4533b3b379e1e3da6ebe1adbb2)
步骤五:运行实验代码
使用如下命令运行实验代码。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_5.jpg?sign=1739591589-StJGbvBwcRmeMkp6UVbdXdBXkQRSXm6d-0-6b4e1dceb0fed4dbe7e209539988c2cf)
运行效果如图1.3~图1.5所示。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_1.jpg?sign=1739591589-WAgt0P20A7MbKwe6iDZNHKCYSpc5zUna-0-a31133c99527ee5cce4faa210d9926d3)
图1.3 单通道灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_2.jpg?sign=1739591589-AuPOSAZ1ak1i4bMUIMTcdiIcmYMaV2BA-0-68d78a2cdaa80c87b144328486499d96)
图1.4 三通道彩色图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_3.jpg?sign=1739591589-ipdFmVGAJ5bvMcxmTlLWJfzyMqVDRnYT-0-3e610adde61165df1b6af85bdd286583)
图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=1739591589-QjgyMLKwf0l0bRpk3LxqKVccdrqeFBkh-0-de0e327db748ef7ca81374a71b446792)
3.实验步骤
创建源码文件test02_imread_matplotlib.py。
按照如下步骤编写代码。
步骤一:导入模块
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_1.jpg?sign=1739591589-UrJkqZTXK1wntUf3FX0G4ITkOnT8lXtG-0-530b79e932d40190b09028d75539ece1)
步骤二:读取图像
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_2.jpg?sign=1739591589-Jd8V2n3RA5qICb4Kca13L361QW2LuzL5-0-3931c0889aa9c6fceae91b0e5c9ead1c)
步骤三:运行实验代码
使用如下命令运行实验代码。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_3.jpg?sign=1739591589-BVzJhka4Xbq4Wto3p0FItdwxxUF0Kpzn-0-d8954ec1f24e3bf6e5fd1828104a080e)
运行效果如图1.6所示。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_4.jpg?sign=1739591589-OI4UprCEAQxLZbukC7LlJAqc9sVSsqBY-0-37739dda674bc426fdc90a4daeb470f4)
图1.6 使用Matplotlib读取图像