本篇文章,学习图像的算术运算,如加法运算。
环境:Windows 7(64) Python 3.6 OpenCV3.4.2
一、图像的加法运算
1.1 cv.add()
OpenCV提供了函数add(),将两个图像相加,两个图像应该具有相同的深度和类型,或者第二个图像可以是标量值。当相加的值超过255时,值就等于255。numpy提供的加法操作是模运算。以下为编程测试结果。
1.2 cv.addWeighted()
函数形式如下:
dst = cv.addWeighted( src1, alpha, src2, beta, gamma[, dst[, dtype]] )
功能:dst = src1*alpha + src3*beta + gamma
参数:
src1:第一个输入数组。
alpha:第一个数组元素的权重。
src2:第二个输入数组,其大小和通道号与src1相同。
beta:第二阵列元素的权重。
gamma:加到总和上。
dst:输出数组,其大小和通道数与输入数组相同。
dtype:输出数组的可选深度; 当两个输入数组具有相同的深度时,dtype可以设置为-1,这相当于src1.depth().
测试代码如下:
import cv2 as cv
import numpy as np
img1 = cv.imread('1.jpg')
img2 = cv.imread('2.jpg')
img1_roi = img1[1:200,1:200]
rows,cols,channels = img2.shape
roi = img1[ 0:rows, 0:cols ]
dst = cv.addWeighted(roi,0.7,img2,0.3,0)
img1[0:rows, 0:cols ] = dst
cv.imshow('res',img1)
cv.waitKey(0)
cv.destroyAllWindows()
运行结果图如下: