学numpy,玩转图片

为啥能够使用代码处理照片

在程序员的眼中图片也就只是一堆数据而已,只要改变了不同的数据,照片所呈现出来的效果也不同。然而numpy这个库刚好能够让我们任意的揉捏这些数据,从而处理照片

1.如何使用numpy裁剪图片

导入我们所需要的库

import numpy as np
import matplotlib.pyplot as plt
#jupyter 魔法指令,预加载,显示图片
%matplotlib inline
#读取图片
img = plt.imread('./flower.jpg')#这里输入需要导入图片的位置
img#显示图片的数据
lt.imshow(img)#显示图片
img.shape#查看图片的长宽及颜色
img2 = img[60:290,30:450]#根据图片的长宽所截取自己需要的部分
img2#打印截取后的结果

运行后结果对比:
学numpy,玩转图片_第1张图片
学numpy,玩转图片_第2张图片

2. 对荷花进行“染色”

#引用了上面的部分代码
img3 = img[:,:,::-1]#对照片的数据进行切片操作,::-1是对红绿蓝三种颜色进行了不同的搭配。
img4 = img[:,:,[0,2,1]
plt.imshow(img3)
plt.imgshow(img4)

img3的显示结果:
学numpy,玩转图片_第3张图片
img4的显示结果:
学numpy,玩转图片_第4张图片

3.对图片进行马赛克处理

import numpy as np
import matplotlib as plt
%matplotlib inline
img = plt.imread('./di.jpg')
plt.imshow(img)#打印照片
img.shape#显示照片参数
head = img[0:230,200:380]#截取需要打马赛克的部分
head2 = head[::5,::5]#打马赛克的过程其实就是将照片的数值的间距调大
img2 = img.copy()#将img的参数复制给img2
#由于打马赛克的图片与需要打码的地方大小不一样,无法将有马赛克的直接粘贴在所需的地方,所以需要进行循环
for i in range(46):
	for j in range(36):
		img2[5*i:5+i*5,200+j*5:205+j*5] = head2[i:j]
plt.imshow(img2)

导入的原图:
学numpy,玩转图片_第5张图片
进行打码的部分:
学numpy,玩转图片_第6张图片
最后的结果:
学numpy,玩转图片_第7张图片

4. 总结

一张图片是由长宽以及颜色三个参数构成。我们可以通过调整不同的长宽来对图片进行裁图,也可以通过这种方式进行打马赛克;而颜色是由三原色(0:红,1:绿,2:蓝)进行排列的方式来进行调色。

你可能感兴趣的:(python,numpy,大数据)