- 图像加法
cv2.add()
# 图像加法
x = np.uint8([250])
y = np.uint8([10])
print (cv2.add(x,y))) # 250+10 = 260 => 255
print (x+y)# 250+10 = 260 % 256 = 4
[[255]]
[4]
- 图像混合
cv2.addWeighted(img1,alpha,img2,(1-alpha),beta),将同等分辨率的图片,按比例混合叠加在一起。
数学公示dst = α · img1 + β · img2 + γ ,其中(α+β=1)
dst=cv2.addWeighted(img1,0.7,img2,0.3,0)
- 位运算(and,or,not,xor)
import cv2
import numpy as np
img1 = cv2.imread('target.jpg')
img2 = cv2.imread('opencv.jpg')
rows,cols,channels = img2.shape
roi = img1[0:rows,0:cols]
gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret,mask = cv2.threshold(gray,172,255,cv2.THRESH_BINARY)
#cv2.bitwise_not()"非"操作对mask取反
mask_inv = cv2.bitwise_not(mask)
#cv2.bitwise()"与"操作取roi和mask中非零值,其他值为0
img1_bg = cv2.bitwise_and(roi,roi,mask = mask)
#cv2.bitwise()"与"操作取img2和mask_inv中非零值,其他值为0
img2_fg = cv2.bitwise_and(img2,img2,mask=mask_inv)
dst = cv2.add(img1_bg,img2_fg)
img1[0:rows,0:cols] = dst
cv2.imshow('res',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()