理论:
线性混合操作
公式:
API:
void cvAddWeighted( const CvArr* src1, double alpha,
const CvArr* src2, double beta,
double gamma, CvArr* dst );
src1
第一个原数组.
alpha
第一个数组元素的权值
src2
第二个原数组
beta
第二个数组元素的权值
dst
输出数组
gamma
添加的常数项。
注意点:两张图像的大小和类型必须一致才可以
代码:
#include <opencv2\opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main() { //Mat src; Mat src1 = imread("D:/opencv/test1.png"); if (src1.empty()) { printf("imread imgae error"); return -1; } Mat src2 = imread("D:/opencv/test2.jpg"); if (src2.empty()) { printf("imread imgae error"); return -1; } namedWindow("input1", CV_WINDOW_AUTOSIZE); namedWindow("input2", CV_WINDOW_AUTOSIZE); imshow("input1", src1); imshow("input2", src2); Mat dst; namedWindow("dst", CV_WINDOW_AUTOSIZE); Mat dst2; namedWindow("dst2", CV_WINDOW_AUTOSIZE); double alpha = 0.5; if (src1.rows == src2.rows && src1.cols == src2.cols && src1.type() == src2.type()) { addWeighted(src1, alpha, src2, 1 - alpha, 0.0, dst); imshow("dst", dst); add(src1, src2, dst2); imshow("dst2", dst2); } waitKey(0); return 0; }