0
点赞
收藏
分享

微信扫一扫

【opencv4】opencv视频教程 C++ 6、图像混合、线性混合、混合权重相加addWeighted()、混合加add()、混合乘multiply()

扒皮狼 2022-02-07 阅读 31

上一讲:【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编译运行结果:
在这里插入图片描述

举报

相关推荐

0 条评论