python 识别两张图片的不同处,并标识
时间: 2023-06-09 08:08:32 浏览: 567
Python可以使用OpenCV库进行图片处理,detectDifferentRegions函数可以识别出两张图片的不同处,并在不同处处画一个边框进行标识。具体实现方法如下:
首先,导入OpenCV库,读取两张图片。
```
import cv2
img1 = cv2.imread('image1.png')
img2 = cv2.imread('image2.png')
```
然后,对两张图片进行灰度化和高斯模糊。
```
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
blur1 = cv2.GaussianBlur(gray1, (5, 5), 0)
blur2 = cv2.GaussianBlur(gray2, (5, 5), 0)
```
接下来,使用absdiff函数计算两张图片的差异,并使用threshold函数进行二值化处理。
```
diff = cv2.absdiff(blur1, blur2)
thresh = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)[1]
```
最后,使用findContours函数寻找不同处的轮廓,并使用drawContours函数在不同处处画一个边框进行标识。
```
contours, hierarchy = cv2.findContours(thresh, 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.rectangle(img2, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这样就可以识别出两张图片的不同处,并用一个边框进行标识了。
阅读全文