
# -*- coding: utf-8 -*- from PIL import Image
from pylab import * def compare_pic_L(pic1,pic2):
#打开第一张图片
im1 = Image.open(pic1).convert('L')
print im1.format ,im1.size, im1.mode #像素值转数组
aim1 = np.transpose(array(im1))
#im1.show() im2=Image.open(pic2).convert('L')
aim2=np.transpose(array(im2))
im2.show() dif= np.zeros((300,307)) for x in range(dif.shape[0]):
for y in range(dif.shape[1]):
if aim1[x,y] == aim2[x,y] :
dif[x,y]=255
else:
dif[x,y]=0
#print dif[x,y]
#print dif
print 'dif:',dif.shape x=im1.size[0]
y=im1.size[1] c = Image.new("L",(x,y),(255))
#c.show()
#用 像素灰度值画图
for u in range(0,x):
for i in range(0,y):
#print type(dif[i,u])
ss=int(dif[u,i])
c.putpixel((u,i),ss)
c.show() def compare_colorful_pic(pic1,pic2):
#打开第一张 把像素点信息保存到数组
im3_1 = Image.open(pic1)
array_im1=np.transpose(array(im3_1))
print array_im1.shape #打开第二张
im33_ = Image.open(pic2)
array_im2=np.transpose(array(im33_))
print array_im2.shape #作差
dif_=array_im2 - array_im1
#print dif_
print type(dif_) #用像素点三基色画图
pic_D = Image.new("RGB",(array_im1.shape[1],array_im1.shape[2]),(255))
for x in range(array_im1.shape[1]):
for y in range(array_im1.shape[2]): pic_D.putpixel((x,y),(255-dif_[0,x,y],255-dif_[1,x,y],255-dif_[2,x,y]))
#注意 两个参数都为元组;;第一个参数:像素数量 宽*高,第二个参数为 三基色 (三通道) pic_D.show()
pic_D.save('d.jpg') if __name__ == "__main__":
compare_pic_L('2.jpg','2__.jpg')
compare_colorful_pic('2.jpg','2__.jpg')