如何在 OpenCV Python 中对两个图像执行按位与运算?
按位与运算在计算机视觉或图像处理中一个非常重要的应用是创建图像的掩码。我们还可以使用该运算符向图像添加水印。
图像的像素值表示为 numpy ndarray。像素值使用 8 位无符号整数 (uint8) 存储,范围从 0 到 255。两个图像之间的按位与运算是在这两个对应图像的像素值的二进制表示上执行的。
以下是执行按位与运算的语法:
cv2.bitwise_and(img1, img2, mask=None)
img1 和 img2 是两个输入图像,mask 是掩码操作。
步骤
要计算两个图像之间的按位与,您可以按照以下步骤操作:
导入所需的库OpenCV。确保您已安装它。
import cv2
使用cv2.imread()方法读取图像。图像的宽度和高度必须相同。
img1 = cv2.imread('lamp.jpg') img2 = cv2.imread('jonathan.jpg')
使用 cv2.biwise_and(img1, img2) 计算图像的按位与。
and_img = cv2.bitwise_and(img1,img2)
显示按位与图像。
cv2.imshow('Bitwise AND Image', and_img) cv2.waitKey(0) cv2.destroyAllWindows()
输入图像
我们将在下面的示例中使用以下图像作为输入文件。
示例 1
在下面的 Python 程序中,我们对两个彩色图像计算按位与:
# import required libraries import cv2 # read two input images. # The size of both images must be the same. img1 = cv2.imread('lamp.jpg') img2 = cv2.imread('jonathan.jpg') # compute bitwise AND on both images and_img = cv2.bitwise_and(img1,img2) # display the computed bitwise AND image cv2.imshow('Bitwise AND Image', and_img) cv2.waitKey(0) cv2.destroyAllWindows()
输出
运行此 Python 程序时,将产生以下输出:
示例 2
下面的 Python 程序展示了按位与运算在图像上的应用。我们创建了一个掩码,然后用它来执行按位与运算。
# import required libraries import cv2 import matplotlib.pyplot as plt import numpy as np # Read an input image as a gray image img = cv2.imread('jonathan.jpg',0) # create a mask mask = np.zeros(img.shape[:2], np.uint8) mask[100:400, 150:600] = 255 # compute the bitwise AND using the mask masked_img = cv2.bitwise_and(img,img,mask = mask) # display the input image, mask, and the output image plt.subplot(221), plt.imshow(img, 'gray'), plt.title("Original Image") plt.subplot(222), plt.imshow(mask,'gray'), plt.title("Mask") plt.subplot(223), plt.imshow(masked_img, 'gray'), plt.title("Output Image") plt.show()
输出
运行此 Python 程序时,将产生以下输出:
广告