PYTHON识别出两张图片的不同处
时间: 2023-06-09 15:08:15 浏览: 250
可以使用Python中的图像处理库OpenCV来实现。以下是一种可能的实现方法:
1. 用OpenCV读取两张图片。
2. 将两张图片转换为灰度图像。
3. 对灰度图像进行高斯模糊处理,减少图片噪点。
4. 对两张模糊后的灰度图像做差,生成差异图像。
5. 对差异图像进行二值化处理,将非零像素设为255,零像素设为0。
6. 利用OpenCV的轮廓检测功能,检测图片中所有的轮廓。
7. 对所有的轮廓进行比较,找到区别最大的几个轮廓。
8. 对区别最大的几个轮廓进行可视化,画在原始图片上。
9. 将两张原始图片以及可视化后的结果展示出来,可以用Matplotlib实现。
以上是基本的实现方法,具体的细节可以根据需要进行调整。
相关问题
PYTHON识别出两张图片的不同处,请写一个代码
可以使用Python的Pillow库实现图片的比较。以下是一个基本的示例代码:
```python
from PIL import Image, ImageChops
img1 = Image.open("image1.jpg")
img2 = Image.open("image2.jpg")
diff = ImageChops.difference(img1, img2)
if diff.getbbox():
print("图片不同")
else:
print("图片相同")
```
首先,我们使用Pillow库打开两张图片 `img1` 和 `img2`。然后使用 `ImageChops.difference()` 函数得到两张图片的差异。如果两张图片相同,则此函数返回一个全黑的图片,没有任何像素点不同;否则,它将返回一个包含差异区域的图片。使用 `diff.getbbox()` 函数获取差异区域的边界框,如果返回None,则代表两张图片相同,否则代表图片不同。
python 识别两张图片的不同处,并标识
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()
```
这样就可以识别出两张图片的不同处,并用一个边框进行标识了。
阅读全文