python对比两张图片找不同

目录

第一种

第二种


第一种 

# 引用图片库
from PIL import Image
# 打开图片
imgA = Image.open('xxx1.jpg<要对比图片的名称及目录>')
imgB = Image.open('xxx2.jpg<同上>')
# 获取目标图片的大小(也就是长和高的像素)
width, height = imgA.size
# 获取图片每个像素的颜色
for x in range(0, width):
    for y in range(0, height):
        color1 = imgA.getpixel((x, y))
        color2 = imgB.getpixel((x, y))
# 对比两张图片的像素颜色  相同的地方变白,不同的地方变黑
        if color1 == color2:
# 改变像素颜色 | 255.255.255为RBG的白色 0.0.0为黑色
            imgA.putpixel((x, y), (255, 255, 255))
        else:
            imgA.putpixel((x, y), (0, 0, 0))
# 输出对比结果  图片名随意命名
imgA.save('xxx3.jpg')

详细代码如下:

from PIL import Image
imgA = Image.open('xxx1.jpg<要对比图片的名称及目录>')
imgB = Image.open('xxx2.jpg<同上>')
width, height = imgA.size
for x in range(0, width):
    for y in range(0, height):
        color1 = imgA.getpixel((x, y))
        color2 = imgB.getpixel((x, y))
        if color1 == color2:
            imgA.putpixel((x, y), (255, 255, 255))
        else:
            imgA.putpixel((x, y), (0, 0, 0))
imgA.save('xxx3.jpg')

第二种

# 引用PLT库
from PIL import Image
# 使用PLT库中的ImageChops
from PIL import ImageChops
# 打开图片
imgA = Image.open('xxx1.jpg<要对比图片的名称及目录>')
imgB = Image.open('xxx2.jpg<同上>')
# 用ImageChops中的找不同工具,将两张图片放进去 工具会自动找不同
different = ImageChops.difference(imgA, imgB)
# 设置条件|如果图片相同 输出‘两张图片相同’,不同则输出对比结果(图片任意命名)
if different.getbbox() is None:
    print('两张图片相同')
else:
    different.save('xxx3.jpg')

详细代码如下:

from PIL import Image
from PIL import ImageChops
imgA = Image.open('xxx1.jpg<要对比图片的名称及目录>')
imgB = Image.open('xxx2.jpg<同上>')
different = ImageChops.difference(imgA, imgB)
if different.getbbox() is None:
    print('两张图片相同')
else:
    different.save('xxx3.jpg')

  • 1
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python中,可以使用OpenCV库来实现对比两张图片,判断其是否一致,并显示差异地方。下面是一个简单的示例代码: ```python import cv2 # 加载两张图片 img1 = cv2.imread('image1.jpg') img2 = cv2.imread('image2.jpg') # 将两张图片转换为灰度图 gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) # 对两张图片进行特征提取和匹配 orb = cv2.ORB_create() kp1, des1 = orb.detectAndCompute(gray1, None) kp2, des2 = orb.detectAndCompute(gray2, None) bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) matches = bf.match(des1, des2) # 计算相似度得分 score = sum([match.distance for match in matches]) / len(matches) # 如果得分低于某个阈值,则认为两张图片不一致 if score > 30: print('The two images are not the same') else: print('The two images are the same') # 使用差异检测算法找出两张图片的差异地方 diff = cv2.absdiff(img1, img2) gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY) thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] contours, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for c in contours: (x, y, w, h) = cv2.boundingRect(c) cv2.rectangle(img1, (x, y), (x + w, y + h), (0, 255, 0), 2) # 显示差异地方 cv2.imshow('Difference', img1) cv2.waitKey(0) ``` 需要注意的是,这只是一个简单的示例代码,实际上还有很多细节需要考虑,比如如何选择适当的阈值、如何处理旋转和缩放等变换、如何处理光照变化等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

丹尼尔先生.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值