opencv 按位运算

这篇博客详细介绍了OpenCV中四种基本的按位运算:按位与、按位或、按位非和按位异或。通过具体的Python代码示例展示了如何使用cv.bitwise_and(), cv.bitwise_or(), cv.bitwise_not()和cv.bitwise_xor()函数进行图像处理,涉及到二进制操作和Numpy数组的使用。" 108939420,9733547,Python数据可视化:matplotlib进阶指南,"['Python', '数据可视化', 'matplotlib', '图形美化', '极坐标绘图']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按位运算 这里包括的按位操作有:AND,OR,NOT,XOR

1.按位与 cv.bitwise_and()
dst = cv.bitwise_and(scr1 ,scr2 ,[,dst[,mask]])
scr1 输入数组1
scr2 输入数组2 dst:输入数组 与输入数组形状和类型相同
mask 可选参数 8 位单通道数组 用于指定要更改的元素位置
dst 目标图像
dst(i) = src1(i)^src2(i)
if mask(i) !=0

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [0,0,100]
img2 = np.zeros((1, 1, 3),np.uint8)
img2[:] = [0,255,200]
dst = cv.bitwise_and(img1, img2)
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()
print(img1)
print(img2)
print(dst)

#bin(100) 0b1100100
#bin(200) 0b11001000 按位与 得 0b1000000 —64
输出结果:[[[ 0 0 100]]]
[[[ 0 255 200]]]
[[[ 0 0 64]]]
2.按位或 bitwise_or()
dst = cv.bitwise_or(src1,src2)
scr1 输入数组1
scr2 输入数组2 dst:输入数组 与输入数组形状和类型相同
mask 可选参数 8 位单通道数组 用于指定要更改的元素位置
dst(i) = src1(i) 或 src2(i)

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [100,0,250]
img2 = np.zeros((1, 1, 3),np.uint8)
img2[:] = [0,250,230]
dst = cv.bitwise_or(img1,img2)
print(img1)
print(img2)
print(dst)
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()
输出结果:
[[[100 0 250]]]
[[[ 0 250 230]]]
[[[100 250 254]]]
3.按位非 bitwise_not()
dst = cv.bitwise_not(scr1 ,[,dst[,mask]])
scr 输入数组
scr2 输入数组2 dst:输入数组 与输入数组形状和类型相同
mask 可选参数 8 位单通道数组 用于指定要更改的元素位置
dst(i) = !src(i)
二进制逐位取反 (二进制+1 *(-1))

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [0,150,250]
dst = cv.bitwise_not(img1)
print(dst)
print(dst + img1)
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()
4.按位异或 dst = cv.bitwise_xor(src1,src2)
scr1 输入数组1
scr2 输入数组2 dst:输入数组 与输入数组形状和类型相同
mask 可选参数 8 位单通道数组 用于指定要更改的元素位置
dst 目标图像
dst(i) = src1(i) 异或 src2(i)

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [100,0,250]
img2 = np.zeros((1, 1, 3),np.uint8)
img2[:] = [0,250,230]
dst = cv.bitwise_xor(img1,img2)
img =cv.imread(‘D:/xi.JPG’)
img1 = cv.add(img,img)
cv.namedWindow(‘image’,cv.WINDOW_AUTOSIZE) #创建窗口显示,窗口名
cv.imshow(‘image’, img1) #显示图像
cv.waitKey(0) #0表示等待键盘输入,按任意键继续巡行程序
cv.destroyAllWindows() #关闭窗口

print(img1)
print(img2)
print(dst)
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值