numpy还可以这样用
主要用到的函数方法:
plt.imread:读取图像,返回ndarray的数组。 plt.imshow:显示图像。 plt.imsave:保存图像。 np.split:数组的分割,分割图像。 np.concatenate:数组的拼接,拼接图像。 ps:imread方法默认只能处理png格式的图像,如果需要处理其他格式的图像,需要安装pillow库。这里下载的图片是jpg格式的,所以在读取的时候会报错。偷懒一下,用ps打开重新用png格式保存了一下,另外直接重命名原图为png也是不行的哦。。。
第一步:导入图片
Import numpy as npImport matplotlib.pyplot as plt# 读取图像数据a = plt.imread(u"狗狗.png")
第二步:对图像进行分割
#读取图像的width,方便对其进行拆分width = a.shape[1]#将图片竖着切分成若干份:将数组以列来进行切分(axis = 1),分成两组li = np.split(a, range(10, width,10), axis=1)#这里我们将图片分割成若干宽度为10的长条li1 = li[::2]#利用切片操作,设置步长为2,相当于从第一条开始,隔条取出,即取出奇数的图片li2 = li[1::2]#利用切片操作,设置步长为2,相当于从第二条开始,隔条取出,即取出偶数的图片
第三步:合并图像:将数组合并在一起
# 把数组合并,相当于把第一个容器中的图片拼接起来。a1 = np.concatenate(li1,axis=1)# 把数组合并,相当于把第二个容器中的图片拼接起来。a2 = np.concatenate(li2,axis=1)
第四步:显示图像(放在一起显示,可以对原图和产生的两张图片进行比较)
Fig, ax = plt.subplots(3)Fig , set_size_inches(10, 10)#原图ax[0].imshow(a)#图1ax[ 1].imshow(a1)#图2ax[2].imshow(a2)plt.tight_layout()
大家可以试着切分更多的条数,或者打乱顺序来拼接图片来看看最终的效果,是不是很神奇呢= =。
这个技术可以运用在哪儿呢?
在图片原创欺骗上可能有些用途,其他的用途还没想到。
本文是由猿人学读者:Mujor的投稿
继续接受投稿中啦,快来投稿噢,稿费300-500。
相关阅读:
太无聊了,欢迎加我微信交流:
爬虫/Web/文本分析技术
备注:交流