今天在一个群里,一个兄弟发起了一个讨论,两个线路板的图片,怎么能对比出两者的不同之处。

这里我暂时假设两张图片都是像素大小差不多标准化的图像,内容只有细微差异(想一下如果差异太大,那还对比啥呢?)
大胆猜测一下大概率用于生产过程中的质量控制或者分类等场景;只要找到些许不同,人眼应该就能一眼判断是否需要继续下一步操作,所以找到不同之处之后还需要标记。
这不就是以前我们常玩的游戏找不同吗?

让ChatGPT为我们工作
因为没有专门学习这方面的知识,所以尝试问了一下 ChatGPT ,并检查它生成的代码是否能直接运行。
需求:
输入两张图,对比差异,标记差异
由于我的确不知道需要使用什么库去做就不限定使用库了,直接说需求。
问:
请使用 Python 编写一个程序,对比两张图片,并在后一张图上标记出差异
ChatGPT答:
要使用Python比较两张图并在后一张图上标记差异,你可以使用OpenCV和Matplotlib库。下面是一个简单的示例代码:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 
 | import cv2import numpy as np
 import matplotlib.pyplot as plt
 
 def compare_images(image1, image2):
 
 img1 = cv2.imread(image1)
 img2 = cv2.imread(image2)
 
 
 gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
 gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
 
 
 diff = cv2.absdiff(gray1, gray2)
 _, threshold = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)
 
 
 contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
 
 
 marked_image = img2.copy()
 for contour in contours:
 (x, y, w, h) = cv2.boundingRect(contour)
 cv2.rectangle(marked_image, (x, y), (x + w, y + h), (0, 255, 0), 2)
 
 
 plt.subplot(1, 3, 1)
 plt.imshow(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB))
 plt.title('Image 1')
 plt.axis('off')
 
 plt.subplot(1, 3, 2)
 plt.imshow(cv2.cvtColor(img2, cv2.COLOR_BGR2RGB))
 plt.title('Image 2')
 plt.axis('off')
 
 plt.subplot(1, 3, 3)
 plt.imshow(cv2.cvtColor(marked_image, cv2.COLOR_BGR2RGB))
 plt.title('Differences')
 plt.axis('off')
 
 plt.tight_layout()
 plt.show()
 
 
 compare_images('image1.png', 'image2.png')
 
 | 
请确保已安装所需的库(OpenCV和Matplotlib),并将image1.png和image2.png替换为你要比较的实际图像的文件路径。此代码将显示两张原始图像以及第二张图像上标记出的差异。
验证程序
1、拷贝程序代码到脚本文件,命名为diffimg.py
2、安装必要的依赖库,主要是  OpenCV  进行图像 diff
| 1
 | pip3 install opencv-python
 | 
3、找一张图拷贝一份,并对任意一张图像做任意修改,并分别命名为程序所需命名 image1.png 和 image2.png

4、执行脚本 diffimg.py

5、增加点难度,找一个找不同游戏里的照片进行对比,看看答案是否正确

改一改就能用了哦吼。
我是 AwesomeYang,感谢关注

本文标题:对比图像内容差异并标记
文章作者:AwesomeYang
发布时间:2023-08-12
最后更新:2025-05-01
原始链接:https://awesomeyang.com/2023/08/12/diff-images/
版权声明:未经允许禁止转载,请关注公众号联系作者