大批量图像处理(3)——检查图像像素(多方法)

两张肉眼看起来没啥区别的图片,在计算机眼里真的是一样的吗?
答案显然是有可能会不一样,因为计算机用数字来进行储存,我们得从根本上去找茬~

以下给出的分别是(1)只处理两张的代码 和(2)处理检查大批次两个文件夹的图片的像素代码

(1)只处理两张的代码
使用scipy.misc库的imread函数进行读取
#检查两张图片的像素差异

import numpy as np
import os
import matplotlib.pyplot as plt
from scipy.misc import imread


old_address = "/home/NEWDISK/output.png"         #原图
new_address = "/home/NEWDISK/huang.png"      #需要比对的图片
eps = 16
a=0

f=tf.gfile.Open(old_address, 'rb')
img = imread(f, mode='RGB').astype(np.float)
ff=tf.gfile.Open(new_address, 'rb')
ims = imread(ff, mode='RGB').astype(np.float)

for i in range(299):
    for j in range(299):
        for k in range(3):
            if (abs(int(img[i, j, k]) - int(ims[i, j, k])) >0):
                print(abs(int(img[i, j, k]) - int(ims[i, j, k])))
                a+=1
print(a)

使用PIL.image的open函数进行读取

#检查两张图片的像素差异
from PIL import Image
import numpy as np
import os
import matplotlib.pyplot as plt
old_address = "/home/NEWDISK/CAAD/wujiekd/caad代码/b6808667896525a4 (1).png"
new_address = "/home/NEWDISK/CAAD/wujiekd/caad代码/b6808667896525a4.png"
a=0
img = np.array(Image.open(old_address))
ims = np.array(Image.open(new_address))
for i in range(299):
    for j in range(299):
        for k in range(3):
            if (abs(int(img[i, j, k]) - int(ims[i, j, k])) > 16):
                print(abs(int(img[i, j, k]) - int(ims[i, j, k])))
                a+=1
print(a)

(2)处理检查大批次两个文件夹的图片的像素代码

#检查两个批次图片的像素差异(大量处理)
from PIL import Image
import numpy as np
import os
import matplotlib.pyplot as plt

old_address = "/home/NEWDISK/caad_images/images"
new_address = "/home/NEWDISK/CAAD_ATTACK_PHOTO/7.25_output_iter50_mix590_submit"

good = 0  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sum =0
filelist = os.listdir(new_address)
for item in filelist:
    if item.endswith('.png'):
        sum+=1
        a = 0
        old_str = old_address + '/' + item
        new_str = new_address + '/' + item
        img = np.array(Image.open(old_str))
        ims = np.array(Image.open(new_str))
        for i in range(299):
            for j in range(299):
                for k in range(3):
                    if (abs(int(img[i, j, k]) - int(ims[i, j, k])) > 16):
                        print(item)
                        good+=1
                        a = 1
                        break
                if a == 1:
                    break
            if a == 1:
                break


print(sum)
print(good)
print(sum-good)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wujiekd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值