2021.3.28OpenCV06画像ミキシング操作addWeighted

/ * txwtech
2021.3.28OpenCV06画像ブレンディング操作addWeighted
理論-線形ブレンディング操作
関連API(addWeighted)
理論-線形ブレンディング操作

AddWeightedは、2つの配列の加重値の合計を計算します

void cvAddWeighted(const CvArr * src1、double alpha、  
const CvArr * src2、double beta、           
double gamma、CvArr * dst); 
src1最初の元の配列  。alpha
最初の配列要素のポイント値  
src22番目の元の配列  
betaポイント2番目の配列要素の値  
dstは、配列の
ガンマ加算の数を出力します  
関数cvAddWeightedは、2つの配列の加重値の合計を計算します:
dst(I)= src1(I)* alpha + src2(I)* beta + gamma
すべての配列は、同じタイプで同じサイズ(またはROI)である必要がありますサイズ)
* /

/*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;
}

 

おすすめ

転載: blog.csdn.net/txwtech/article/details/115283883