使用 OpenCV Python 检测和可视化两个图像之间的差异
转自:使用 OpenCV Python 检测和可视化两个图像之间的差异 - Glasshost如果您需要比较两个图像并确定它们之间的差异,OpenCV Python 提供了一种简单有效的方法来完成此任务。本指南将向您展示如何使用OpenCV Python检测和可视化两个图像之间的差异。
先决条件
为了遵循本指南,您需要在计算机上安装 Python 3.x 和 OpenCV。
导入所需库
首先,我们需要导入所需的库。在这种情况下,我们将需要 cv2 库进行图像处理,numpy 用于数值计算。
import cv2
import numpy as np
加载图像
接下来,我们需要加载要比较的两个图像。我们将使用 cv2 库中的 imread() 函数来读取图像。
# Load the two images
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
调整图像大小
如果两个图像的大小不同,我们需要将它们调整为相同的尺寸以进行比较。我们将使用 cv2 库中的 resize() 函数来调整图像大小。
# Resize the images to the same dimensions
img1 = cv2.resize(img1, (640, 480))
img2 = cv2.resize(img2, (640, 480))
将图像转换为灰度
为了比较两个图像,我们需要将它们转换为灰度。我们将使用 cv2 库中的 cvtColor() 函数将图像转换为灰度。
# Convert the images to grayscale
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
计算图像之间的差异
现在我们有了两个灰度图像,我们可以计算它们之间的差异。我们将从另一个图像中减去一个图像并取差值的绝对值。
# Calculate the difference between the images
diff = cv2.absdiff(gray1, gray2)
阈值差异图像
为了更好地可视化两个图像之间的差异,我们将阈值差异图像。我们将使用 cv2 库中的 threshold() 函数来阈值图像。
# Threshold the difference image
_, thresh = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)
在阈值图像中查找轮廓
现在我们有了阈值图像,我们可以在图像中找到轮廓。我们将使用 cv2 库中的 findContours() 函数来查找轮廓。
# Find the contours in the thresholded image
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
在原始图像上绘制轮廓
最后,我们可以在原始图像上绘制轮廓,以可视化两个图像之间的差异。我们将使用 cv2 库中的 drawContours() 函数来绘制轮廓。
# Draw the contours on the original image
cv2.drawContours(img1, contours, -1, (0, 0, 255), 2)
显示图像
现在,我们可以显示原始图像和在其上绘制轮廓的图像,以可视化两个图像之间的差异。
# Display the images
cv2.imshow('Original Image', img1)
cv2.imshow('Difference Image', thresh)
cv2.waitKey(0)
知道如何使用OpenCV Python检测和可视化两个图像之间的差异
标签:Python,差异,cv2,OpenCV,可视化,图像 From: https://www.cnblogs.com/niubi007/p/17640389.html