opencv中使用cvmerge() 函数融合图像时能否对各个源单通道图像加权融合 5
1个回答
展开全部
%%假如
r_up=double(up(:,:,1));
g_up=double(up(:,:,2));
b_up=double(up(:,:,3));
r_low=double(low(:,:,1));
g_low=double(low(:,:,2));
b_low=double(low(:,:,3));
RGB(:,:,1)=0.5*r_up+0.5*r_low;
RGB(:,:,2)=0.5*g+0.5*g_low;
RGB(:,:,3)=0.5*b+0.5*b_low;
//OPencv中
//计算两数组的加权值的和
//void cvAddWeighted( const CvArr* src1, double alpha,const CvArr* src2, double beta,
double gamma, CvArr* dst );
//函数 cvAddWeighted 计算两数组的加权值的和:
dst(I)=src1(I)*alpha+src2(I)*beta+gamma
//对比matlab
cvCvtPixToPlane(img,b_img,g_img,r_img,NULL);//img为输入的原图,分解各通道
float r_up=0;
float r_low=0;
cvGetMinMaxHistValue(r_img,&r_low,&r_up,NULL,NULL); //求的r_img中的,最大值r_up,最小值r_low
cvAddWeighted(r_img,r_up,r_img,r_low,0,r_img);//得出的r_img,就是加权后的值;
再分别对b_img, g_img进行同样的操作。
cvMerge(b_img,g_img,r_img,dst);//dst为输出图像
r_up=double(up(:,:,1));
g_up=double(up(:,:,2));
b_up=double(up(:,:,3));
r_low=double(low(:,:,1));
g_low=double(low(:,:,2));
b_low=double(low(:,:,3));
RGB(:,:,1)=0.5*r_up+0.5*r_low;
RGB(:,:,2)=0.5*g+0.5*g_low;
RGB(:,:,3)=0.5*b+0.5*b_low;
//OPencv中
//计算两数组的加权值的和
//void cvAddWeighted( const CvArr* src1, double alpha,const CvArr* src2, double beta,
double gamma, CvArr* dst );
//函数 cvAddWeighted 计算两数组的加权值的和:
dst(I)=src1(I)*alpha+src2(I)*beta+gamma
//对比matlab
cvCvtPixToPlane(img,b_img,g_img,r_img,NULL);//img为输入的原图,分解各通道
float r_up=0;
float r_low=0;
cvGetMinMaxHistValue(r_img,&r_low,&r_up,NULL,NULL); //求的r_img中的,最大值r_up,最小值r_low
cvAddWeighted(r_img,r_up,r_img,r_low,0,r_img);//得出的r_img,就是加权后的值;
再分别对b_img, g_img进行同样的操作。
cvMerge(b_img,g_img,r_img,dst);//dst为输出图像
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
东莞大凡
2024-11-19 广告
2024-11-19 广告
作为东莞市大凡光学科技有限公司的工作人员,对于halcon标定板有所了解。Halcon标定板是高精度相机标定的关键工具,通常采用实心圆点或方格作为标志点。我们公司提供的halcon标定板,具有高精度、稳定可靠的特点,适用于机器视觉领域的各种...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询