2021.3.28 Operación de mezcla de imágenes OpenCV06 addWeighted

/ * txwtech
2021.3.28OpenCV06 operación de combinación de imágenes operación de combinación de
teoría-lineal de
adición ponderada API relacionada (adición ponderada)
operación de combinación de teoría-lineal

AddWeighted calcula la suma de los valores ponderados de dos matrices

void cvAddWeighted (const CvArr * src1, double alpha,  
const CvArr * src2, double beta,           
double gamma, CvArr * dst); 
src1 La primera matriz original.  
alpha El valor en puntos del primer elemento de la matriz  
src2 La segunda matriz original  
beta El punto El valor del segundo elemento de matriz,  
dst, genera
el número de adiciones de gama de matriz   .
La función cvAddWeighted calcula la suma de los valores ponderados de dos matrices:
dst (I) = src1 (I) * alpha + src2 (I) * beta + gamma
Todas las matrices deben ser del mismo tipo y del mismo tamaño (o ROI tamaño)
* /

/*txwtech
2021.3.28OpenCV06图像混合操作addWeighted
理论-线性混合操作
相关API (addWeighted)
理论-线性混合操作

AddWeighted 计算两数组的加磅值的和

void  cvAddWeighted( const CvArr* src1, double alpha,  
const CvArr* src2, double beta,           
double gamma, CvArr* dst ); 
src1  第一个原数组.  
alpha  第一个数组元素的磅值  
src2  第二个原数组  
beta  第二个数组元素的磅值  
dst  输出数组  
gamma  作和合添加的数量。
函数 cvAddWeighted 计算两数组的加磅值的和:
dst(I)=src1(I)*alpha+src2(I)*beta+gamma
所有的数组必须的相同的类型相同的大小(或 ROI 大小)
*/
#include <opencv2\opencv.hpp>

#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
	Mat src1;
	Mat src2;
	Mat dst;
	src1 = imread("E:/pictures/win7logo1.jpg");
	src2 = imread("E:/pictures/win7logo2.jpg");
	//if (src.empty())
	if(!src1.data)
	{
		printf("load win7logo1 image failed\n");
		return -1;
	}
	if (!src2.data)
	{
		printf("load win6logo2 image failed\n");
		return -1;
	}
	double alpha = 0.5;//
	if (src1.rows == src2.rows && src1.cols == src2.cols
		&& src1.type() == src2.type())
	{
		addWeighted(src1,alpha,src2,(1.0-alpha),0.0,dst);
		//add(src1,src2,dst,Mat());//强行图像叠加,不推荐
		//multiply(src1, src2, dst, 1.0);//像素相乘
		imshow("win7a",src1);
		imshow("win7b",src2);
		namedWindow("mixed image", CV_WINDOW_AUTOSIZE);
		imshow("mixed image", dst);
	}
	else
	{
		printf("mix failed,size or type is not same\n");
	}

	

	waitKey(0);

	return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/txwtech/article/details/115283883
Recomendado
Clasificación