参与运算的图像大小、类型必须一致
取模加法:结果 = 图像1 + 图像2
- 像素值 <= 255,图像1 + 图像2(100+58=158)
- 像素值 > 255,对255取模(255+58 = (255+58)% 255 = 58)
产生这种结果的原因是,图像的数据类型是unit8,进行加法运算后,超出8位之外的部分会被舍弃,所以进行加法运算后的像素值始终小于255
image1 + image2
饱和运算:结果 = cv2.add(图像1, 图像2)
- 像素值 <= 255,图像1 + 图像2
- 像素值 > 255,取值255
cv2.add(image1, image2)
import cv2
import numpy as np
color1 = cv2.imread('image/color.jpg')
cv2.imshow('color1', color1)
color2 = color1
np_add = color1 + color2 # Numpy加法
cv_add = cv2.add(color1, color2) # OpenCV加法
cv2.imshow('np_add', np_add)
cv2.imshow('cv_add', cv_add)
cv2.waitKey(0)
cv2.destroyAllWindows()
将两张或两张以上的图像信息融合到一张图像上
融合的图像含有更多的信息、能够更方便人们观察或者计算机处理
图像加法:结果图像 = 图像1 + 图像2
图像融合:结果图像 = 图像1 * 系数1 + 图像2 * 系数2 + 亮度调节量
cv2.addWeighted(src1, alpha, src2, beta, gamma) # 参数gamma不能省略
dst = src1 * alpha + src2 * beta + gamma
import cv2
color = cv2.imread('image/color.jpg')
color = color[0:700, 0:1300]
test = cv2.imread('image/test.jpg')
test = test[0:700, 0:1300]
dst = cv2.addWeighted(color, 0.5, test, 0.5, 0) # 图像融合
cv2.imshow('color', color)
cv2.imshow('test', test)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()