![计算机视觉应用与实战](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=1738811632-GMZFt8w7VWxIRnAlsmFaVHtrLJoDfIlY-0-aa97a503ba635f381e5e400236a209df)
3.实验步骤
创建源码文件test01_imread_opencv.py。
按照如下步骤编写代码。
步骤一:导入模块
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_1.jpg?sign=1738811632-NSp5abAr92ryRPrhQPAipiQpGHWGUIcX-0-c48f1f935bc971f524df1b24f7600e11)
步骤二:读取单通道灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_2.jpg?sign=1738811632-Hwvhb1To6pjKxXhUzYR2wZo295CxHI6s-0-4e63c976e8cd3c1a8749a9c4809d3d50)
步骤三:读取三通道彩色图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_3.jpg?sign=1738811632-CaiH7OV57DXL3u11J9VV6m7XrxnMIfQq-0-e2bd91dda825ce4d75fc2f54ee320907)
步骤四:将彩色图转换为灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_4.jpg?sign=1738811632-BIVtq7ATBvuc0lK2ZZcmj6TqvgYmQj2U-0-bd2d0e3bd2869e5de14dbc47a3e1dc04)
步骤五:运行实验代码
使用如下命令运行实验代码。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_27_5.jpg?sign=1738811632-Sf0ACRJLAI2J802Py6fb1kmCaxucCJHy-0-929a1c37d94ec9481929a61578309527)
运行效果如图1.3~图1.5所示。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_1.jpg?sign=1738811632-tKvI5WhiJCz6io1TDhJFjtMOt7Mm6jZ4-0-9ac7a6ee16f90f5d5ccbc0f9bc90fa2e)
图1.3 单通道灰度图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_2.jpg?sign=1738811632-Q1NM3mZxs9j37PIH7QddOhXke3DO8Y9Y-0-036ce20f67700945b9da26e3c3f51f52)
图1.4 三通道彩色图
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_28_3.jpg?sign=1738811632-AJA3lGYXgSEfxtvZgzPI3siYPoTrBLud-0-6ecc90c8645afb00fbfef9d0b42191a1)
图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=1738811632-FZ6oFJonWw6apS9SFx9p3zl2zAHP8uQT-0-2318dfaa0f2ec986908be66d9d890bf8)
3.实验步骤
创建源码文件test02_imread_matplotlib.py。
按照如下步骤编写代码。
步骤一:导入模块
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_1.jpg?sign=1738811632-xz48MIBfd3KdrPYe8pze1PYpxx30NJz2-0-6bacf2b912a996d1a62ae13728567358)
步骤二:读取图像
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_2.jpg?sign=1738811632-Bl9OkPATs7XYSQOGUzhjygjKwkWpBbBb-0-cf11d47917b7fb767bdf0d69dfb6ae9c)
步骤三:运行实验代码
使用如下命令运行实验代码。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_3.jpg?sign=1738811632-I8FYyNaFxVegT63ZzK74qGB7ujapWgdM-0-620b73674ae9c2b71ba32cd19764032e)
运行效果如图1.6所示。
![](https://epubservercos.yuewen.com/254F10/23950114009720806/epubprivate/OEBPS/Images/43251_29_4.jpg?sign=1738811632-spivgrrOCQ311HHkugVFRD9659fq7NHU-0-a2792ebc827705ebfcfbf8d773ae5866)
图1.6 使用Matplotlib读取图像