opencv学习-图像混合

Posted 殇堼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv学习-图像混合相关的知识,希望对你有一定的参考价值。

图像混合:大小、通道数、类型都相同的两张图像按照一定的比例进行合并的过程。

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char** argv) {
	Mat a, b, c;
	a = imread("D:/images/1.png");
	b = imread("D:/images/2.png");
	if (a.empty()) {
		printf("could not load image which named a.png...");
			return -1;
	}
	if (a.empty()) {
		printf("could not load image which named b.png...");
			return -1;
	}

	double t = 0.5;//表示1的占比为0.5
	if (a.rows == b.rows && a.cols == b.cols && a.type() == b.type()) {
		addWeighted(a, alpha, b, (1.0 - t), 0.0, c);
		// multiply(src1, src2, dst, 1.0);

		imshow("1", a);
		imshow("2", b);
		imshow("1 and 2", c);
	}
	else {
		printf("could not blend images , the size of images is not same...\\n");
		return -1;
	}

	waitKey(0);
	return 0;
}

快速混合

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char** argv) {
	Mat a, b, c;
	a = imread("D:/images/1.png");
	b = imread("D:/images/2.png");
	
	double alpha = 0.5;
	if (a.rows == b.rows && a.cols == b.cols && a.type() == b.type()) {
		addWeighted(a, alpha, b, (1.0 - alpha), 0, c);
		imshow("1", a);
		imshow("2", b);
		imshow("1 and 2", c);
	}
	else {
		printf("could not blend images , the size of images is not same...\\n");
		return -1;
	}

	waitKey(0);
	return 0;
}

以上是关于opencv学习-图像混合的主要内容,如果未能解决你的问题,请参考以下文章

学习 opencv--- 分离颜色通道 && 多通道混合

opencv学习笔记访问图像中像素的三种方式ROI区域图像叠加和图像混合

opencv学习笔记第六篇:分离颜色通道多通道图像混合和图像对比度亮度值的调整

OpenCV 图像混合

OpenCV 图像混合

OpenCV图像线性变换(图像线性混合亮度和对比度增强线性变换API)