使用工具Numpy,Scipy
from scipy import misc
import numpy
import matplotlib.pyplot
face = misc.face()
matplotlib.pyplot.subplot(211)
matplotlib.pyplot.imshow(face)
matplotlib.pyplot.subplot(212)
matplotlib.pyplot.imshow(face[:int(face.shape[0]/2),:int(face.shape[1]/2)])
matplotlib.pyplot.show()
运行结果
解释
face = misc.face()
该行把Scipy库中的图像face加载到一个二维数组中(以前用得较多的是在misc库中的图像lena 但是最近好像lena被从库中剔除了)
matplotlib.pyplot.subplot(211)
matplotlib.pyplot.imshow(face)
matplotlib.pyplot.subplot(212)
matplotlib.pyplot.imshow(face[:int(face.shape[0]/2),:int(face.shape[1]/2)])
第一行用于调整布局,211指的是把布局分为二行一列把要放的图像放在第一个位置
第二行放第一个数组
第三行同第一行
第四行用来对图片进行切割
matplotlib.pyplot.imshow(face[:int(face.shape[0]/2),:int(face.shape[1]/2)])
face.shape[0] 返回的是这个数组的纵轴长度,face。shape[1]返回的是数组的横轴长度
matplotlib.pyplot.show()
用来显示结果
注意:
因为数组的下标必须是整数,所以face[:int(face.shape[0]/2),:int(face.shape[1]/2)]
要用int进行强制转换,
本案例中我们切割的是图像的左上半部分,同样我们可以通过调整face[:int(face.shape[0]/2),:int(face.shape[1]/2)]
里的切片范围从而切割我们想要的部分比如如果我们想要得到图片的左下部分我们可以调整为
matplotlib.pyplot.imshow(face[int(face.shape[0]/2):int(face.shape[0]),:int(face.shape[1]/2)])
得到的结果如下