[英]Detect and count number of different pixels between two images with OpenCV Python
假设两张图片的大小相同
import numpy as np
import cv2
im1 = cv2.imread("im1.jpg")
im2 = cv2.imread("im2.jpg")
# total number of different pixels between im1 and im2
np.sum(im1 != im2)
您可以使用 openCVs absDiff
来获取图像之间的差异,然后使用countNonZero
来获取不同像素的数量。
img1 = cv2.imread('img1.png')
img2 = cv2.imread('img2.png')
difference = cv2.absdiff(img1, img2)
num_diff = cv2.countNonZero(difference)
由于 cv2 图像只是彩色图像的形状(height, width, num_color_dimensions)
和黑白图像的(height, width)
numpy 数组,因此使用普通的 numpy 操作很容易做到。 对于黑白图像,我们对不同像素的数量求和:
(img1 != img2).sum()
(请注意True=1
和False=0
,因此我们可以对数组求和以获得True
元素的数量。)
对于彩色图像,我们希望找到颜色的任何分量不同的所有像素,因此我们首先检查是否有任何分量沿该轴不同(轴 = 2,因为形状分量为零索引):
(img1 != img2).any(axis=2).sum()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.