一、学习内容
1 两张图像按权重相加
2 两张图像相乘(?应该可用于频域滤波吧)
二、代码
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
Mat src1,src2,dst;
//src1 = imread("e:/2 opencv_projects_zl/desk1.jpg");
//src2 = imread("e:/2 opencv_projects_zl/desk2.jpg");
src1 = imread("e:/2 opencv_projects_zl/desk3.jpg");
src2 = imread("e:/2 opencv_projects_zl/desk4.jpg");
if (!src1.data) {
printf("Load Image Desk1 Error...\n");
return -1;
}
if (!src2.data) {
cout << "Load Image Desk2 Error...\n" << endl;
return -1;
}
namedWindow("Figure1", CV_WINDOW_AUTOSIZE);
imshow("Figure1", src1);
namedWindow("Figure2", CV_WINDOW_AUTOSIZE);
imshow("Figure2", src2);
// 学习新内容
// 1. 将两幅图像按权重合成为一张图像
double alpha = 0.5;
double beta = 1- alpha;
double gamma = 0;
if (src1.rows == src2.rows && src1.cols == src2.cols && src1.type() == src2.type()) {
addWeighted(src1,alpha,src2,beta,gamma,dst);
namedWindow("Figure3", CV_WINDOW_AUTOSIZE);
imshow("Figure3", dst);
}
else {
printf("the sizes or types of the two images are not same...\n");
return -1;
}
// 2.将两幅图像直接相加add
if (src1.rows == src2.rows && src1.cols == src2.cols && src1.type() == src2.type()) {
add(src1,src2,dst,Mat());
namedWindow("Figure4", CV_WINDOW_AUTOSIZE);
imshow("Figure4", dst);
}
else {
printf("the sizes or types of the two images are not same...\n");
return -1;
}
// 3.将两幅图像直接相乘multiply
if (src1.rows == src2.rows && src1.cols == src2.cols && src1.type() == src2.type()) {
multiply(src1, src2, dst,1.0);
namedWindow("Figure5", CV_WINDOW_AUTOSIZE);
imshow("Figure5", dst);
}
else {
printf("the sizes or types of the two images are not same...\n");
return -1;
}
waitKey(0);
return 0;
}
三、调试结果