zoukankan      html  css  js  c++  java
  • 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')
  • 相关阅读:
    Elasticsearch常用命令
    Linux中使用systemctl操作服务、新建自定义服务
    Windows下安装MongoDB解压版
    Java执行cmd命令、bat脚本、linux命令,shell脚本等
    Ubuntu
    PostgreSQL删除数据库失败处理
    Ubuntu service 命令
    Ubuntu18修改/迁移mysql5.7数据存放路径
    攻防世界-web-ics-02(sql注入、ssrf、目录扫描)
    攻防世界-web-filemanager(源码泄漏、二次注入)
  • 原文地址:https://www.cnblogs.com/willowj/p/6234873.html
Copyright © 2011-2022 走看看