OpenCV中的位运算函数cv2.bitwise_and()详解

     

目录

1. 什么是按位与操作

2. cv2.bitwise_and()函数的语法

3. 掩码操作示例代码

4. 图像融合示例代码 

5. 注意事项


在计算机视觉领域,位运算是一种重要的技术,用于对图像进行像素级别的操作和处理。OpenCV是一个强大的计算机视觉库,提供了许多位运算函数,其中cv2.bitwise_and()函数用于执行图像的按位与操作。 

1. 什么是按位与操作

按位与操作是指对两幅图像的像素进行逐位比较,当且仅当两幅图像的对应像素值都为1时,结果图像的对应像素值才为1;否则为0。这种操作常用于图像融合、掩码操作等场景。

2. cv2.bitwise_and()函数的语法

cv2.bitwise_and(src1, src2, dst=None, mask=None)

src1:第一幅输入图像 

src2:第二幅输入图像

dst:可选参数,输出图像,与输入图像具有相同的尺寸和数据类型

mask:可选参数,掩码图像,用于指定哪些像素进行按位与操作

3. 掩码操作示例代码

import numpy as np
import cv2

# 读取图像
img = cv2.imread('1.jpg')
img = cv2.resize(img, dsize=None, fx=0.3, fy=0.3)
# 下面2行代码构造输出OpenCV图标的掩膜,255确保所有位都是1
imgMask = np.zeros(img.shape, dtype=np.uint8)
imgMask[100:200, 400:500] = 255

# 执行按位与操作
resultImg1 = cv2.bitwise_and(img, imgMask)
resultImg2 = cv2.bitwise_and(img, (255, 0, 0))
resultImg3 = cv2.bitwise_and(img, (0, 255, 0))
resultImg4 = cv2.bitwise_and(img, (0, 0, 255))

# 显示结果图像
cv2.imshow('resultImg1', resultImg1)
cv2.imshow('resultImg2', resultImg2)
cv2.imshow('resultImg3', resultImg3)
cv2.imshow('resultImg4', resultImg4)
cv2.waitKey(0)

输出图像如下:

第一张图像为遮盖一部分图像,第二、三、四张图像分别为仅保留蓝 、绿、红通道像素值。

4. 图像融合示例代码 

import cv2
import numpy as np

# 读取两幅图像
img1 = cv2.imread('4.png')
img2 = cv2.imread('3.png')

#使图像大小一致
img2_resized = cv2.resize(img2, (img1.shape[1], img1.shape[0]))

# 执行按位与操作
result = cv2.bitwise_and(img1, img2_resized)

# 显示结果图像
cv2.imshow('img1', img1)
cv2.waitKey(0)
cv2.imshow('img2', img2)
cv2.waitKey(0)
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出图像如下:

5. 注意事项

输入图像的尺寸和数据类型必须相同,否则会导致错误。

可以使用掩码图像来指定哪些像素进行按位与操作。

按位与操作可以用于图像融合、掩码操作等场景,具有很高的实用性。 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值