图片相加
cv2.add(img1, img2) 注:图像相加就是矩阵的相加,所以两张图大小必须要一样,相加后的图片会更亮
图片相减
cv2.subtract(a, b), 得到的结果是a-b,相减后图片会更暗
图片相乘
cv2.mutiply(a,b),效果和相加差不多
图片相除
cv2.divide(a,b),效果和相减差不多
图像溶合
cv2.addWeighted(img1, alpha, img2, bate, gamma)
alpha: 代表img1占的权重
bate: 代表img2 占的权重
gamma: 静态权重,就是给整张融合后的图片加像素点或者减像素点
图像的非操作
bitwise_not(img):假如一张图片是黑色,经过非操作后就会变成白色
图像的与操作
cv2.bitwise_and(img1,img2):当两张图片某块区域颜色一样时得出照片的这块区域不变色,不一样时得出的是黑色,即颜色不一样时像素点变为0.
图像的或运算
cv2.bitwise_or(img1, img2):两者都为0才为0
图像的异或运算
cv2.bitwise_xor(img1, img2):相同的地方为0,不同的地方为1
以下代码是利用上面基础知识来为一幅图添加简单的水印
#1.引入一副图片#2.要有一个logo,自己创建#3.计算图片在什么地方添加,在添加的地方变成黑色#4.利用add,在logo与图片叠加在一起import cv2import numpy as np#导入图片dog = cv2.imread('d:\STUDY_OPENCV\img\dog.jfif')#创建LOGO和masklogo = np.zeros((200, 200, 3), np.uint8)mask = np.zeros((200, 200),np.uint8)#绘制logologo[20:120, 20:120] = [0, 0 , 105]logo[80:180, 80:180] = [0,105,0]mask[20:120, 20:120] = 255mask[80:180, 80:180] = 255#对mask按位求反m = cv2.bitwise_not(mask)#选择dog添加logo的位置roi = dog[0:200, 0:200]#与m进行与操作tmp = cv2.bitwise_and(roi,roi, mask = m) #roi是三通道的,所以要以这种形式#进行叠加dst = cv2.add(tmp, logo)dog[0:200, 0:200] = dstcv2.imshow('logo', logo)cv2.imshow('dog',dog)cv2.imshow('dst', dst)cv2.waitKey(0)
结果如下把水印加在了左上角