这节从实际出发,分享几个图像的处理案例,让大家更熟悉matplotlib库中多个函数的综合运用。
1、图像颜色渐变处理
如果我们需要改变一张图片的灰度,弄四个不同版本出来,由亮到暗,那我们可以使用如下代码:
import matplotlib.pyplot as plt
#图片下载地址:https://static.jyshare.com/images/mix/tiger.jpeg
img=plt.imread('tiger.jpeg')
tiger=img/255
plt.figure(figsize=(8,6))
plt.suptitle('dotcpp')
for i in range(1,5):
plt.subplot(2,2,i)
x=1-0.2*(i-1)
plt.imshow(tiger*x)
plt.show()请大家先自行阅读代码,提前将这张老虎的图片下载到与源码同级目录,然后调用imread函数读取,然后使用figure设置画布大小(待会要同时绘制四张图)然后通过循环,依次绘制四张图片,每张图片都使用subplot函数创建,由于是四张,因此subplot的参数设置为2行2列,图片依次从左上、右上、左下、右下排布,然后设置x依次由1、0.8、0.6、0.4四个档传入imshow。效果如下:

2、裁剪局部图像
当我们想要图像的某个位置时,比如大致我们想取老虎鼻子嘴巴的位置,那么我们可以根据图像大小大致判断行列的位置,在 imshow函数绘制时,我们可以通过前两个参数指定图片的行和列的范围,即
400:700,350:650
就可以限定图片的范围,颜色通道则全部保留,完整代码如下:
import matplotlib.pyplot as plt
#图片下载地址:https://static.jyshare.com/images/mix/tiger.jpeg
img=plt.imread('tiger.jpeg')
tiger=img/255
plt.figure(figsize=(8,6))
plt.suptitle('dotcpp')
plt.imshow(tiger[400:700,350:650,:])
plt.show()
3、图片RGB分离颜色
我们可以修改颜色通道的RGB值,得到特定结果,比如我们需要RGB三原色的红蓝绿,可以通过设置颜色通道的其中两个值为0,得到三个颜色,代码如下:
import matplotlib.pyplot as plt
#图片下载地址:https://static.jyshare.com/images/mix/tiger.jpeg
img=plt.imread('tiger.jpeg')
tiger=img/255
plt.suptitle('dotcpp')
tiger1 = tiger.copy()
tiger2 = tiger.copy()
tiger3 = tiger.copy()
tiger1[:, :,[0,1]] = 0
tiger2[:, :,[0,2]] = 0
tiger3[:, :,[1,2]] = 0
plt.subplot(1,3,1)
plt.imshow(tiger1)
plt.subplot(1,3,2)
plt.imshow(tiger2)
plt.subplot(1,3,3)
plt.imshow(tiger3)
plt.show()大家可以自行阅读代码,我们定义了三个图像数组,分别对颜色通道的其中两个赋值为0,即可得到三原色分离效果,如下:

大家可以上机亲自试验~
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程