• 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')
  • 相关阅读:
    ios 动态监听键盘输入法和高度
    [置顶] Android常用UI控件之PopupWindow
    Subsets II
    采用移位方法获取汉字编码
    wxPython利用pytesser模块实现图片文字识别
    Ubuntu下搭建Java开发环境
    贴心设计:打造高可用性的移动产品
    java 静态方法和实例方法的区别
    sql 2005 update语句
    ios状态栏操作
  • 原文地址:https://www.cnblogs.com/willowj/p/6234873.html
Copyright © 2020-2023  润新知