如何在 OpenCV Python 中对图像执行按位异或运算?


彩色图像(RGB)具有三个通道:红色、蓝色和绿色。图像表示为一个三维 NumPy 数组。图像的像素值使用 8 位无符号整数 (uint8) 存储,范围为“0 到 255”。

两个图像的按位异或运算是在对应图像的这些像素值的二进制表示上执行的。

以下是执行两个图像按位异或运算的语法:

cv2.bitwise_xor(img1, img2, mask=None)

这里,img1 和 img2 是两个输入图像,mask 是一个掩码操作。

步骤

要计算两个图像之间的按位异或,您可以按照以下步骤操作:

导入所需的库 **OpenCV、Numpy** 和 **Matplotlib**。确保您已安装它们。

import cv2
import numpy as np
import matplotlib as plt

使用 **cv2.imread()** 方法读取图像。图像的宽度和高度必须相同。

img1 = cv2.imread('waterfall.jpg')
img2 = cv2.imread('work.jpg')

使用 **cv2.biwise_xor(img1, img2)** 对两个图像进行按位异或运算。

xor_img = cv2.bitwise_xor(img1,img2)

显示按位异或图像。

cv2.imshow('Bitwise XOR Image', xor_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

我们将在下面的示例中使用以下图像作为 **输入文件**。

示例 1

在下面的 Python 程序中,我们对两个彩色图像进行按位异或运算。

# import required libraries import cv2 # Read two images. The size of both images must be the same. img1 = cv2.imread('waterfall.jpg') img2 = cv2.imread('work.jpg') # compute bitwise XOR on both images xor_img = cv2.bitwise_xor(img1,img2) # display the computed bitwise XOR image cv2.imshow('Bitwise XOR Image', xor_img) cv2.waitKey(0) cv2.destroyAllWindows()

输出

运行此 Python 程序时,它将产生以下输出:

示例 2

以下程序显示了对两个图像应用按位异或运算。我们创建了两个图像,第一个是圆形,第二个是相同大小的正方形。

# import required libraries import cv2 import numpy as np import matplotlib.pyplot as plt # define first image as a circle img1 = np.zeros((300, 300), dtype = "uint8") img1 = cv2.circle(img1, (150, 150), 150, 255, -1) # define second image as a square img2 = np.zeros((300,300), dtype="uint8") img2 = cv2.rectangle(img2, (25, 25), (275, 275), 255, -1) # perform bitwise XOR on img1 and img2 xor_img = cv2.bitwise_xor(img1,img2) # Display the bitwise XOR output image plt.subplot(131), plt.imshow(img1, 'gray'), plt.title("Circle") plt.subplot(132), plt.imshow(img2,'gray'), plt.title("Square") plt.subplot(133), plt.imshow(xor_img, 'gray'), plt.title("Bitwise XOR") plt.show()

输出

运行此 Python 程序时,它将产生以下输出:

更新于: 2022-09-28

3K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.