如何合并两个图像而不会在opencv中失去强度

时间:2011-11-16 06:42:09

标签: opencv merge

我在opencv中有两张图片:图片A 图片B

图像A 相机的输出帧 图像B 是通过屏蔽一个图像获得的Alpha透明图像 在屏蔽图像B 之前,它会被cvWarpPerspective()

扭曲
  • 我尝试了cvAddWeighted() - 当你给出alpha和beta值时它会失去强度
  • 我试过aishack - 即使在这里你也失去了输出图像的整体强度
  • 我尝试了silveiraneto.net - 对我的案例没有帮助

请帮助我解决混合后输出图像中没有强度损失的问题。

提前致谢

2 个答案:

答案 0 :(得分:2)

当你说,你失去了强度......你留下的问题,你如何失去它?

你是否在某种意义上放松了强度:

当您添加图像时,您会达到最大强度,其余部分将被丢弃。 (8位像素加法示例:Pix1 = 200 i,Pix2 = 150 i。“Pix1 + Pix2 = 350”但最大值为255,所以Pix1 + Pix2 = 255)

通过将图像A的前一个值添加到图像B(它仅覆盖图像的某些部分),它会受到影响。 (8位图像的示例:Pix1 = 200 i,Pix2 = 150,(Pix1 + Pix2)/ 2 = 175,但是当第二图像的像素值为零时,Pix2 = 0.然后(Pix1 + Pix2) )/ 2 = 100,这是原始图像值的一半)

其中一个观察结果应告诉您需要做什么。 根据你提到的功能,我不太清楚他们使用哪种方法。

答案 1 :(得分:2)

我终于得到了答案。它包括5个步骤......

步骤1

cvGetPerspectiveTransform(q,pnt,warp_matrix); 
//where pnt is four point x and y cordinates and warp_matrix is a 3 x 3 matrix

步骤2

cvWarpPerspective(dst2, neg_img, warp_matrix,CV_INTER_LINEAR)
//dst2 is overlay image ,neg_img is a blank image 

步骤3

cvSmooth(neg_img,neg_img,CV_MEDIAN); //smoothing the image

Step - 4

cvThreshold(neg_img, cpy_img, 0, 255, CV_THRESH_BINARY_INV);
//cpy_img is a created image from image_n

Step - 5

cvAnd(cpy_img,image_n,cpy_img);// image_n is a input image
cvOr(neg_img,cpy_img,image_n);

输出 - image_n(不会丢失输入图像的强度)