使用 OpenCV 在图像上使用 Bitwise_AND
按位运算符通常用于对使用单个位操作的位或二进制数的模式执行按位运算。 OpenCV 使用相同的概念来处理和提取图像中的信息。
在本文中,我们将具体了解如何使用 Python OpenCV 库来使用 Bitwise AND。
OpenCV 中的位运算符
OpenCV 中使用的基本位运算符如下。
- 按位与
- 按位或
- 按位非
- 按位异或
OpenCV中使用位运算符,以便我们可以提取或过滤掉图像的一部分,描绘图像并使用非矩形ROI(感兴趣区域)进行操作。
在 OpenCV 中对图像使用按位与运算符
在 OpenCV 中,按位与运算符用于将两个不同的图像合并为一个,或者它可以将图像的某些部分合并为另一个。 它通常计算两个数组/标量/图像的每个元素的按位逻辑组合。
OpenCV 有一个内置的方法来执行按位运算。 所以对于 OpenCV 中的按位与运算符,我们使用 cv.bitwise_and()。
Syntax of Python OpenCV bitwise_and()
cv.bitwise_and( src1, src2[, dst[, mask]] ) -> dst
参数
src1 | 第一个输入数组/图像。 |
src2 | 第二个输入数组/图像。 |
dst | 与输入数组具有相同大小和类型的输出图像。 |
mask | 可选操作掩码,8 位单通道数组,指定要更改的输出数组的元素。 |
让我们看看如何通过下面显示的示例在图像上使用按位与运算符。
首先,我们必须将 OpenCV 导入为 cv,然后使用 OpenCV 的 imread()
方法,我们必须使用 imread()
读取两张图像。 此方法将读取提供的图像并以数组格式返回图像数据。
现在,我们必须将 imread()
返回的数据存储在名为 img1 和 img2 的变量中。 在应用按位与之前,您必须确保您使用的两个图像具有相同的形状,即相同的宽度、高度和通道数。
如果不确定图像的形状,可以使用 OpenCV 的 shape() 方法,如下所示。
代码片段:
# import opencv
import cv2 as cv
# read the images
img1 = cv.imread('img1.jpg')
img2 = cv.imread('img2.jpg')
print('Shape of img_1 : ', img1.shape)
print('Shape of img_2 : ', img2.shape)
dimension = (img2.shape[1], img2.shape[0])
img1 = cv.resize(img1, dimension, interpolation = cv.INTER_AREA)
print('Shape of img_1 : ', img1.shape)
print('Shape of img_2 : ', img2.shape)
输出:
Shape of img_1 : (4000, 6000, 3)
Shape of img_2 : (3133, 4700, 3)
Shape of img_1 : (3133, 4700, 3)
Shape of img_2 : (3133, 4700, 3)
在大多数情况下,两个图像的大小不会相同,因此您可能必须使用 resize()
方法调整图像大小,如上面的代码所示。 在这种情况下,您可以更改任一图像的大小或两个图像的大小。
对于此示例,我们将使用 resize()
方法将 img1 的大小更改为 img2 的大小,如上所示。
代码片段:
bitwise_AND = cv.bitwise_and(img1, img2)
cv.imshow('Image-1', img1)
cv.imshow('Image-2', img2)
cv.imshow('Bitwise-AND', bitwise_AND)
cv.waitKey(0)
现在我们有两个相同大小的图像,我们可以使用 cv.bitwise_and()
对给定的两个图像执行按位与运算,并将输出存储在名为按位与的变量中。 要显示所有输入、输出和结果图像,我们将使用 imshow()
函数。
我们正在显示所有图像,以阐明如何为输出图像显示输入图像。 这就是上面代码的输出结果。
我们还使用 waitKey()
方法并将值 0 传递给它,因为它允许用户在短时间内显示一个窗口或直到按下任何键。 因此,如果在参数中传递 0,它会一直等待,直到按下任何键。
这就是我们如何对两个相同大小的图像执行按位与。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串