这节从实际出发,分享几个图像的处理案例,让大家更熟悉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。效果如下:

matplot图像变暗


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()

matplotlib截取局部图像


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,即可得到三原色分离效果,如下:

matplotlib分离三原色

大家可以上机亲自试验~

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)