欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

图像的逻辑运算

程序员文章站 2022-07-12 12:18:53
...

按位与

dst = cv2.bitwise_and ( src1 , src2 [ , mask ] )
dst:与输入值具有相同大小的输出值
src1:第一个输入值
src2:第二个输入值
mak:可选操作掩码

# 构造掩模,使用按位与操作保留掩模内的图像。
'''
掩模:用选定的图像、图形或物体对待处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。
'''
import numpy as np
import cv2 as cv

image1 = cv.imread("D:/exercise/lusi.jpg")  # 读取图像
cv.imshow("image1", image1)  # 显示图像
image2 = np.zeros(image1.shape, dtype=np.uint8)  # 构造掩模图像
'''
numpy.zeros(shape,dtype,order):
返回给定形状,类型的新数组,用0填充。  
'''
image2[100:400, 100:400] = 255  # 图像切片部分设置为白色
'''
图像切片:
图像上边距离原图上边100像素
图像下边距离原图上边400像素
图像左边距离原图左边100像素
图像右边距离原图左边400像素
切片大小:300*300像素
'''
cv.imshow("image2",image2)
image3 = cv.bitwise_and(image1,image2)#两张图片进行按位与,取出掩模内的图像
cv.imshow("image3",image3)
cv.waitKey()
cv.destroyAllWindows()

运行结果:
图像的逻辑运算

按位或

dst = cv2.bitwise_or ( src1 , src2 [ , mask ] )

按位非

按位非后的值是:255减去原有的像素值。
dst = cv2.bitwise_not ( src [ , mask ] )

import cv2 as cv

image1 = cv.imread("D:/exercise/lusi.jpg")
cv.imshow('image1', image1)
image2 = cv.bitwise_not(image1)  # 按位非 对图像取反
cv.imshow('image2', image2)
cv.waitKey()
cv.destroyAllWindows()

运行结果:
图像的逻辑运算

按位异或

异为1,同为0 。
dst = cv2.bitwise_xor ( src1 , src2 [ , mask ] )