繁体   English   中英

使用 OpenCV Python 检测和计算两个图像之间不同像素的数量

[英]Detect and count number of different pixels between two images with OpenCV Python

类似于这里的问题但我想返回两个图像之间不同像素总数的计数。

我确信在 Python 中使用 OpenCV 是可行的,但我不确定从哪里开始。

假设两张图片的大小相同

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=1False=0 ,因此我们可以对数组求和以获得True元素的数量。)

对于彩色图像,我们希望找到颜色的任何分量不同的所有像素,因此我们首先检查是否有任何分量沿该轴不同(轴 = 2,因为形状分量为零索引):

(img1 != img2).any(axis=2).sum()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM