图像运算
图像的加法运算
- cv2.add
图像的减法运算
- cv2.subtract
图像的溶合
- addWeighted(A, alpha, B, bate, gamma)
- A 溶合图像A
- alpha 溶合图像A溶合之后显示的权重
- B 溶合图像B
- bate 溶合图像B溶合之后显示的权重
- gamma 静态权重 将溶合之后的所有图像都加一个gamma值
OpenCV位运算-非操作
-
bitwise_not(img)
OpenCV位运算-与运算
-
bitwise_and(img, img) 两个图像的交集
OpenCV位运算-或与异或
- bitwise_or(img1, img2) 或操作 两个集合所有的值 并集
-
bitwise_xor(img, img2) 异或操作 交集的部分为0 非交集的部分为1 相同为假不同为真
import cv2 import numpy as np img1 = np.zeros((200, 200), np.uint8) img2 = np.zeros((200, 200), np.uint8) img1[20: 120, 20:120] = 255 img2[80: 180, 80:180] = 255 # 或操作 # new_img = cv2.bitwise_or(img1, img2) # 异或操作 # new_img = cv2.bitwise_xor(img1, img2) cv2.imshow('img1', img1) cv2.imshow('img2', img2) cv2.imshow('new_img', new_img) cv2.waitKey(0)
为图像添加水印
#1. 引入一幅图片,dog
#2. 要有一个LOGO,需要自己创建
#3. 计算图片在什么地方添加,在添加的地方变成黑色
#4. 利用add,将logo 与 图处叠加到一起
import cv2
import numpy as np
#导入图片
dog = cv2.imread('./dog.jpeg')
#创建LOGO和mask
logo = np.zeros((200, 200, 3), np.uint8)
mask = np.zeros((200, 200), np.uint8)
#绘制LOGO
logo[20:120, 20:120] = [0,0,255]
logo[80:180, 80:180] = [0,255,0]
mask[20:120, 20:120] = 255
mask[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)
dst = cv2.add(tmp, logo)
dog[0:200,0:200] = dst
cv2.imshow('dog', dog)
# cv2.imshow('dst', dst)
# cv2.imshow('tmp', tmp)
# cv2.imshow('m', m)
# cv2.imshow('mask', mask)
# cv2.imshow('logo', logo)
cv2.waitKey(0)