【VC++、OpenCV3.4】影象混合
阿新 • • 發佈:2018-12-17
1、線性混合理論:兩幅影象的每一個畫素線性混合
其中a是0-1範圍的值。f0和f1是源影象
相關的API(addWeighted)
用法:
CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,
double beta, double gamma, OutputArray dst, int dtype = -1);
計算公式:
#include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; int main(int argc, char** argv) { Mat src1 = imread("C:\\Users\\admin\\Desktop\\zuo.jpg", IMREAD_COLOR); Mat src2 = imread("C:\\Users\\admin\\Desktop\\you.jpg", IMREAD_COLOR); if (src1.empty()) { printf("Could not load image zuo.jpg"); return 0; } if (!src2.data) { printf("Could not load image you.jpg"); return 0; } namedWindow("Pic1 window", CV_WINDOW_AUTOSIZE); imshow("Pic1 window", src1); namedWindow("Pic2 window", CV_WINDOW_AUTOSIZE); imshow("Pic2 window", src2); double alpha = 0.5; Mat dst1,dst2; if (src1.rows==src2.rows && src1.cols==src2.cols && src1.type()==src2.type()) { addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst1); //當然也可以之間使用add相加/ add(src1, src2, dst2); namedWindow("add window", CV_WINDOW_AUTOSIZE); imshow("add window", dst1); namedWindow("add window2", CV_WINDOW_AUTOSIZE); imshow("add window2", dst2); } else { printf("The size of two pics is not same..."); return -1; } waitKey(0); return 0; }
看視訊的時候挺長的,但是內容其實挺少的。