迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

使用 OpenCV 在图像上使用 Bitwise_AND

作者:迹忆客 最近更新:2023/05/31 浏览次数:

按位运算符通常用于对使用单个位操作的位或二进制数的模式执行按位运算。 OpenCV 使用相同的概念来处理和提取图像中的信息。

在本文中,我们将具体了解如何使用 Python OpenCV 库来使用 Bitwise AND。


OpenCV 中的位运算符

OpenCV 中使用的基本位运算符如下。

  1. 按位与
  2. 按位或
  3. 按位非
  4. 按位异或

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() 函数。

我们正在显示所有图像,以阐明如何为输出图像显示输入图像。 这就是上面代码的输出结果。

改变图像的大小并使用 bitwise_and() 执行按位与运算

我们还使用 waitKey() 方法并将值 0 传递给它,因为它允许用户在短时间内显示一个窗口或直到按下任何键。 因此,如果在参数中传递 0,它会一直等待,直到按下任何键。

这就是我们如何对两个相同大小的图像执行按位与。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便