opencv4opencv视频教程 C++ 6图像混合线性混合混合权重相加addWeighted()混合加add()混合乘multiply()

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv4opencv视频教程 C++ 6图像混合线性混合混合权重相加addWeighted()混合加add()混合乘multiply()相关的知识,希望对你有一定的参考价值。

上一讲:【opencv4】opencv视频教程 C++ 5、读写图像imread、imwrite、读写像素at<>()、修改像素值、ROI区域选择(图像裁剪)Rect、Vec3b与Vec3F、CV_32F)

下一讲:【opencv4】opencv视频教程 C++ 7、手动调整图像亮度与对比度 g(i, j) = αf(i, j) + β(点操作与邻域操作概念)

[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编译运行结果:

以上是关于opencv4opencv视频教程 C++ 6图像混合线性混合混合权重相加addWeighted()混合加add()混合乘multiply()的主要内容,如果未能解决你的问题,请参考以下文章

opencv4opencv视频教程 C++ 7手动调整图像亮度与对比度 g(i, j) = αf(i, j) + β(点操作与邻域操作概念)

opencv4opencv视频教程 C++(opencv教程)3矩阵的掩膜操作(filter2D)

opencv4opencv视频教程 C++(opencv教程)1opencv介绍和环境搭建

opencv4opencv视频教程 C++ 5读写图像imreadimwrite读写像素at<>()修改像素值ROI区域选择(图像裁剪)RectVec3b与Vec3FCV_32F)

opencv4opencv教程 C++ 4Mat对象(深拷贝:clone()copyTo(),create()创建图片,zeros()eye()初始化空白图像,Scalar()创建向量)

OpenCV3.x视频教程出来啦!