前言
经过上次对numpy简单的认识,相信家人们都非常想了解我们目前可以使用它做什么了
那么我们就举两个实战例子来进行说明
今天我们先以numpy打马为例
Are you ready?
numpy打马赛克
1.方法引入
在开始前我们需要额外的引入几个方法,来显示我们的图片
至于其具体细节,我们先不要管,我们只需要输入:
import matplotlib.pyplot as plt
%matplotlib inline
2.图片导入
ok,我们随便找一个图片来进行操作
比如,我找了个名为Zacarx,jpg的图片
然后,我们把它放到同目录下
然后,这样操作:
img = plt.imread('./Zacarx.jpg')
img
>>array([[[249, 236, 61],
[244, 231, 56],
[237, 224, 50],
...,
[251, 201, 42],
[255, 205, 46],
[255, 208, 49]],
[[249, 236, 59],
[245, 232, 57],
[239, 226, 52],
...,
[250, 200, 41],
[254, 204, 45],
[255, 206, 47]],
[[252, 240, 60],
[249, 237, 57],
[243, 230, 53],
...,
[248, 198, 39],
[251, 201, 42],
[253, 203, 44]],
...,
[[135, 166, 125],
[103, 131, 91],
[ 97, 123, 84],
...,
[120, 155, 65],
[120, 155, 65],
[120, 155, 65]],
[[137, 168, 127],
[103, 131, 91],
[ 96, 122, 83],
...,
[120, 155, 65],
[120, 155, 65],
[120, 155, 65]],
[[138, 169, 128],
[104, 132, 92],
[ 95, 121, 82],
...,
[120, 155, 65],
[120, 155, 65],
[120, 155, 65]]], dtype=uint8)
我们输入img显示的是基本信息,而且因为这是个彩色图片,所以它以三位的方式显示了出来。
然后我们可以输入
plt.imshow(img)
来显示图片,如图:
当然我们也可以使用
img.shape
来查看图片大小,如图:
1080与1080说的是横纵所对应的分辨率
3所说的是三原色
3.图片截取
下来,我们也可以进行图片的截取:
[ ]里面放的是横纵参数的范围,比如200:1000就是200到1000像素的横值
50:900可以类比一下,横纵都写出来就代表对应的面积了
4.图片打马
当然,我们需要打马赛克的地方不是这里,而是邪恶莫蒂身后的瑞克
我们可以先把瑞克老爷截取出来
然后在进行打码操作,操作如下:
我们一行一行的解析
rick = img[700:1050,0:120]
表示的是截取700-1500与0-120所围成的面积,也就是我们的瑞克老爷
rick = rick[::10,::10]
每十个像素取一个,使分辨率降低10*10倍
plt.imshow(rick)
显示图片
那好,这样我们就得到了一张打了马赛克的rick老爷
5.原图替换
那么,我们就可以进行最后一步了
我们肯定不能直接放上去,因为rick.jpg分辨率降低了100倍,那么大小也小了一百倍,所以,我们不妨利用for语句对之放大
这样就得到了我们想要的效果了,是不是很简单?
快去找一个你想打马赛克的图片试试吧!