如何使用matplotlib进行图像处理


如何使用matplotlib进行图像处理

文章插图
个人认为 , Matplotlib在图像处理方面并不是特别的擅长 , 首先Matplotlib自身仅支持PNG图像的导入 , 如果想要导入并显示其他格式的图像 , 需要依靠Pillow库才能实现;其次图像处理说白了就是数组的计算处理 , 而这主要是依靠numpy来实现的 , 仅靠Matplotlib自身的方法能实现的功能非常有限 。
如何使用matplotlib进行图像处理

文章插图
但是 , 有总比没有强 , 今天我们就用下面这张头条免费提供的图来讲解一下如何使用Matplotlib进行简单的图像处理 。
如何使用matplotlib进行图像处理

文章插图

如何使用matplotlib进行图像处理

文章插图
一、图像数据导入想要处理图像 , 要做的diyi步工作就是将图像转换成我们能够识别的格式 , Matplotlib的image函数集提供了一个方法——imread , 该方法可将PNG格式的图像转换成numpy数组 。
如何使用matplotlib进行图像处理

文章插图
import matplotlib.image as mpimg
如何使用matplotlib进行图像处理

文章插图
import os
如何使用matplotlib进行图像处理

文章插图
picName= os.path.dirname(os.path.realpath(__file__))+\'/1.png\'
如何使用matplotlib进行图像处理

文章插图
img=mpimg.imread(picName)
如何使用matplotlib进行图像处理

文章插图

如何使用matplotlib进行图像处理

文章插图
【如何使用matplotlib进行图像处理】输出图像数组img我们可以看出:
如何使用matplotlib进行图像处理

文章插图
该数组为三维数组 , 由于该图是一副RGBA图像 , 所以每四个数字一组对应一个像素点 。
如何使用matplotlib进行图像处理

文章插图
该数组的数字都是浮点型 , 而这与我们常见的RGBA图像的数组不太一样 , 这是因为当我们使用imread方法导入PNG 图像的时候 , Matplotlib会自动的将图像数据转换成区间[0,1]内的浮点数 。
如何使用matplotlib进行图像处理

文章插图
由于该图是一副黑白图像 , 所以R、G、B三通道的数值均相同
二、图像显示将图像转换成Matplotlib认识的数组以后 , 使用imshow方法便可以将图像显示出来 。
plt.imshow(img)
在使用该方法的时候 , 我们还可以创建一个对象 , 方便对图像进行更多的操作 。
imgplot = plt.imshow(img)
伪彩色在数据导入部分我们讲过 , 由于我们使用的是一副黑白图像 , 所以R、G、B三通道的数值都是一样的 , 当我们只保留一个通道时 , 图像就变成了单通道图像 , 此时再用imshow方法Matplotlib会自动显示成一副伪彩色图像 。
lum_img = img[:,:,0]
plt.imshow(lum_img)
显示伪彩色图像时 , 默认的彩色查找表为‘viridis’ , 我们可以通过cmap关键字设置其他彩色查找表
plt.imshow(lum_img, cmap=\"hot\")
还可以使用绘图对象的set_cmap方法设置彩色查找表
imgplot = plt.imshow(lum_img)
imgplot.set_cmap(\'nipy_spectral\')
使用伪彩色显示图像时 , 颜色与数值的关系图colorbar可以使图像数据更直观 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。