win10+Python3.7.3+OpenCV3.4.1入门学习(十三 直方图处理)————13.7 pyplot模块介绍
Python版本是Python3.7.3,OpenCV版本OpenCV3.4.1,开发环境为PyCharm
13.7 pyplot模块介绍
matplotlib.pyplot模块提供了一个类似于MATLAB绘图方式的框架,可以使用其中的函数方便地绘制图形。
13.7.1 subplot函数
模块matplotlib.pyplot提供了函数matplotlib.pyplot.subplot()用来向当前窗口内添加一个子窗口对象。该函数的语法格式为:
matplotlib.pyplot.subplot(nrows, ncols, index)
式中:
● nrows为行数。
● ncols为列数。
● index为窗口序号。
例如,subplot(2, 3, 4)表示在当前的两行三列的窗口的第4个位置上,添加1个子窗口,如下图所示。
需要注意的是,窗口是按照行方向排序的,而且序号是从“1”开始而不是从“0”开始的。如果所有参数都小于10,可以省略彼此之间的逗号,直接写三个数字。例如,上述subplot(2, 3, 4)可以直接表示为subplot(234)。
eg1:编写程序演示函数subplot()的使用。
代码如下:
import cv2 import matplotlib.pyplot as plt img = cv2.imread('image\\equ.bmp',cv2.IMREAD_GRAYSCALE) equ = cv2.equalizeHist(img) plt.figure("subplot示例") plt.subplot(121),plt.hist(img.ravel(),256) plt.subplot(122),plt.hist(equ.ravel(),256) plt.show( ) # 显示图像
运行上述程序,会显示如下图所示的图像。
13.7.2 imshow函数
模块matplotlib.pyplot提供了函数matplotlib.pyplot.imshow()用来显示图像。其语法格式为:
matplotlib.pyplot.imshow(X, cmap=None)
式中:
● X为图像信息,可以是各种形式的数值。
● cmap表示色彩空间。该值是可选项,默认值为null,默认使用RGB(A)色彩空间。
eg2:使用函数matplotlib.pyplot.imshow()显示彩色图像。
根据题目的要求,编写代码如下:
import cv2 import matplotlib.pyplot as plt img = cv2.imread('image\\girl.bmp') imgRGB=cv2.cvtColor(img,cv2.COLOR_BGR2RGB) plt.figure("显示结果") plt.subplot(121) plt.imshow(img) plt.axis('off') #关闭坐标轴的显示 plt.subplot(122) plt.imshow(imgRGB),plt.axis('off') plt.show( ) # 显示图像
运行上述程序,会显示如下图所示的图像。
在图中,左图是直接使用默认色彩空间参数模式显示的彩色图像的结果,图像没有正常显示出来。这是因为通过函数cv2.imread()读取的图像,其通道顺序是BGR模式的。而函数matplotlib.pyplot.imshow()的显示顺序是RGB模式的,所以显示出来的图像通道顺序是错乱的,因而无法正常显示。
如果想使用函数matplotlib.pyplot.imshow()正常地显示函数cv2.imread()读取的图像,需要对读取的图像进行通道顺序转换。图中的右图是使用语句“imgRGB=cv2.cvtColor (img, cv2.COLOR_BGR2RGB)”将函数cv2.imread()读取到的图像img从BGR转换为RGB模式后,再使用函数matplotlib.pyplot.imshow()的默认色彩空间模式显示的彩色图像,可以看到图像显示正常。
eg3:使用函数matplotlib.pyplot.imshow()显示灰度图像。
本例中,我们尝试使用不同的形式显示灰度图像,观察图像是否能够正常显示。
代码如下:
import cv2 import matplotlib.pyplot as plt o = cv2.imread('image\\girl.bmp') g=cv2.cvtColor(o, cv2.COLOR_BGR2GRAY) plt.figure("灰度图像显示演示") plt.subplot(221) plt.imshow(o),plt.axis('off') plt.subplot(222) plt.imshow(o,cmap=plt.cm.gray),plt.axis('off') plt.subplot(223) plt.imshow(g),plt.axis('off') plt.subplot(224) plt.imshow(g,cmap=plt.cm.gray),plt.axis('off') plt.show( ) # 显示图像
运行上述程序,会显示如下图所示的图像。可以看到,本例中所采用了几种针对灰度图像的显示方式,只有使用灰度图像作为参数,并且将色彩空间参数值设置为“cmap=plt.cm.gray”,灰度图像才被正常显示
本例以不同的形式展示了使用函数matplotlib.pyplot.imshow()显示灰度图像的效果。
● 左上角是原始图像。因为没有对读取的图像进行通道转换,直接将其作为彩色图像显示,所以显示结果中通道顺序是错乱的,图像没有正常显示。
● 右上角是我们尝试将彩色图像作为原始图像,将其色彩空间参数设置为“cmap=plt.cm.gray”,让彩色图像以灰度图像展示的结果,图像显示失败。
● 左下角是使用默认色彩空间参数,显示灰度图像的结果。这种情况下,灰度图像会采用默认的RGB模式显示。可以看到,图像没有正常显示。
● 右下角是将灰度图像作为原始图像,并将其色彩空间参数设置为“cmap=plt.cm.gray”而显示的灰度图像,图像显示正常。
eg4:使用函数matplotlib.pyplot.imshow()以不同的参数形式显示灰度图像。
代码如下:
import cv2 import matplotlib.pyplot as plt o = cv2.imread('image\\8.bmp') g=cv2.cvtColor(o, cv2.COLOR_BGR2GRAY) plt.figure("灰度图像显示演示") plt.subplot(221); plt.imshow(g, cmap=plt.cm.gray) plt.subplot(222); plt.imshow(g, cmap=plt.cm.gray_r) plt.subplot(223); plt.imshow(g, cmap='gray') plt.subplot(224); plt.imshow(g, cmap='gray_r') plt.show( ) # 显示图像
上述代码中,色彩空间参数cmap的参数值“plt.cm.gray_r”及“gray_r”中的“r”是英文“reverse”的缩写,表示逆转的意思。
运行上述程序,会显示如下图所示的图像。
- 点赞
- 收藏
- 分享
- 文章举报
- win10+Python3.7.3+OpenCV3.4.1入门学习(十四 傅里叶变换)————14.1 傅里叶变换理论基础
- win10+Python3.7.3+OpenCV3.4.1入门学习(十四 傅里叶变换)————14.3 OpenCV实现傅里叶变换
- win10+Python3.7.3+OpenCV3.4.1入门学习(十四 傅里叶变换)————14.2 Numpy实现傅里叶变换
- 基于Python的opencv学习练习(十三)直方图绘制
- OpenCV学习笔记10 OpenCV图像处理模块ImgProc Module. Image Processing(三)
- [Python入门及进阶笔记]Python-基础-数字处理相关模块
- Python入门学习笔记之Python模块
- python学习系列之OS模块介绍
- Python 学习入门(10)—— 时间
- Python学习笔记(三):Time、函数、模块、文件I/O、异常处理(快速入门篇)
- Python图像处理库PIL的Image模块介绍(三)
- Python模块学习 ---- thread 多线程处理
- Python学习入门基础教程(learning Python)--8.3 字典常用的方法函数介绍
- OpenCV学习笔记15 OpenCV图像处理模块ImgProc Module. Image Processing(八)
- Python模块学习 ---- threading 多线程控制和处理
- django-mysql 中的金钱计算事务处理 分类: 小技巧 python学习 mysql 2015-07-27 16:52 10人阅读 评论(0) 收藏
- 零基础入门学习Python(27):模块和包
- Python图像处理库PIL的ImageEnhance模块介绍
- Python模块学习 ---- threading 多线程控制和处理
- 模块图像opencv学习之路【四】——opencv文件结构介绍