上一讲:【opencv4】opencv视频教程 C++ 5、读写图像imread、imwrite、读写像素at<>()、修改像素值、ROI区域选择(图像裁剪)Rect、Vec3b与Vec3F、CV_32F)
[opencv_C++] 入门强推!!!【B站最全】
文章目录
理论-线性混合操作
相关API (addWeighted)
gamma校验值(从上图最后公式来看,可以理解为偏置吧)?一般设置0.0
示例代码
原图:
test1
test2
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, const char* argv[]) {
Mat src1, src2, dst1, dst2, dst3;
src1 = imread("test1.jpg");
src2 = imread("test2.jpg");
if (!src1.data) {
printf("could not load first image...\n");
return -1;
}
if (!src2.data) {
printf("could not load second image...\n");
return -1;
}
//if (src1.rows == src2.rows && src1.cols == src2.cols) {
if (src1.size==src2.size && src1.type() == src2.type()) {
double alpha = 0.5;
//namedWindow("line-blend", CV_WINDOW_AUTOSIZE);
addWeighted(src1, (1 - alpha), src2, alpha, 0.0, dst1); //混合权重相加
add(src1, src2, dst2, Mat());//混合加
multiply(src1, src2, dst3, 1.0); //混合乘
imshow("line-blend-addWeighted", dst1);
imshow("line-blend-add", dst2);
imshow("line-blend-multiply", dst3);
waitKey(0);
return 0;
}
else {
printf("image size is not same...\n");
return -1;
}
}
VS编译运行结果: