如何在OpenCV Python中对两幅图像执行按位或操作?
在OpenCV中,一个彩色(RGB)图像被表示为3维numpy数组。图像的像素值使用8位无符号整数(uint8)存储,其范围从0到255。对两幅图像执行按位或操作是在对应图像的像素值的二进制表示上进行的。
语法
下面是执行两个图像的按位或操作的语法 –
cv2.bitwise_or(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_or(img1, img2) 计算两幅图像的按位或。
or_img = cv2.bitwise_or(img1,img2)
显示按位或图像
cv2.imshow('Bitwise OR Image', or_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 OR on both images
or_img = cv2.bitwise_or(img1,img2)
# display the computed bitwise OR image
cv2.imshow('Bitwise OR Image', or_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出
当您运行此Python程序时,它将产生以下输出 –
示例2
这个Python程序显示了在两个图像上应用按位或操作的应用程序。我们创建了两个图像,第一个是一个圆形,第二个是一个同样大小的正方形。
# 导入所需的库
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 将第一张图片定义为一个圆
img1 = np.zeros((300, 300), dtype = "uint8")
img1 = cv2.circle(img1, (150, 150), 150, 255, -1)
# 将第二张图片定义为一个正方形
img2 = np.zeros((300,300), dtype="uint8")
img2 = cv2.rectangle(img2, (25, 25), (275, 275), 255, -1)
# 执行图片1和图片2之间的按位或操作
or_img = cv2.bitwise_or(img1,img2)
# 显示按位或输出图像
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(or_img, 'gray'), plt.title("Bitwise OR")
plt.show()
输出
运行此Python程序时,将产生以下输出结果−