首页 > 代码库 > python PIL比较图片像素

python PIL比较图片像素

 1 # -*- coding: utf-8 -*-
 2 
 3 from PIL import Image
 4 from pylab import *
 5 
 6 def compare_pic_L(pic1,pic2):
 7     #打开第一张图片
 8     im1 = Image.open(pic1).convert(L)
 9     print im1.format ,im1.size, im1.mode
10     
11     #像素值转数组
12     aim1 = np.transpose(array(im1))
13     #im1.show()
14 
15     im2=Image.open(pic2).convert(L)
16     aim2=np.transpose(array(im2))
17     im2.show()
18 
19     dif= np.zeros((300,307))
20 
21     for x in range(dif.shape[0]):
22         for y in range(dif.shape[1]):
23             if aim1[x,y] == aim2[x,y] :
24                 dif[x,y]=255
25             else:
26                 dif[x,y]=0
27                 #print dif[x,y]
28     #print dif
29     print dif:,dif.shape
30 
31     x=im1.size[0]
32     y=im1.size[1]
33     
34     c = Image.new("L",(x,y),(255))
35     #c.show()
36     #用 像素灰度值画图
37     for u in range(0,x):
38         for i in range(0,y):
39             #print type(dif[i,u])
40             ss=int(dif[u,i])
41             c.putpixel((u,i),ss)
42     c.show()
43 
44 def compare_colorful_pic(pic1,pic2):
45     #打开第一张 把像素点信息保存到数组
46     im3_1 = Image.open(pic1)
47     array_im1=np.transpose(array(im3_1))
48     print array_im1.shape
49 
50     #打开第二张
51     im33_ = Image.open(pic2)
52     array_im2=np.transpose(array(im33_))
53     print array_im2.shape
54 
55     #作差
56     dif_=array_im2 - array_im1
57     #print dif_
58     print type(dif_)
59 
60     #用像素点三基色画图
61     pic_D = Image.new("RGB",(array_im1.shape[1],array_im1.shape[2]),(255))
62     for x in range(array_im1.shape[1]):
63         for y in range(array_im1.shape[2]):
64             
65             pic_D.putpixel((x,y),(255-dif_[0,x,y],255-dif_[1,x,y],255-dif_[2,x,y]))
66             #注意 两个参数都为元组;;第一个参数:像素数量 宽*高,第二个参数为 三基色 (三通道)
67 
68     pic_D.show()
69     pic_D.save(d.jpg)
70 
71 if __name__ == "__main__":
72     compare_pic_L(2.jpg,2__.jpg)
73     compare_colorful_pic(2.jpg,2__.jpg)

 

python PIL比较图片像素