blending two images by Opencv

时光怂恿深爱的人放手 提交于 2019-12-02 01:35:56

First, check Adding Two Images with Different Size.

Another way to do it would be to set the region of interested on the bigger image using the width/heigh of the smaller (cvSetImageROI() will do that), and then perform the blend with cvAddWeighted(). You'll find some source code to do that and here.

I'm guessing you have two images that need to be aligned. You'll also have the amount one image needs to be displaced by.

You can create a new image that can contain both the images after being displaced. This means, it would be the height of the original image+vertical displacement and its width would be width of original*2-horizontal displacement.

Then you can set ROIs on this image and copy images.

You write a Rect_from_Mat function which returns Rect(0, 0, img.rows, img.cols).

Then:

Rect roi = Rect_from_Mat(img1) & Rect_from_Mat(img2);

Mat img1_roi = img1(roi), img2_roi = img2(roi);
if(results_in_img1)
{
  addWeighted(img1_roi, alpha, img2_roi, beta, gamma, img1_roi);
  return img1;
}

Note that the 'addWeighted' line will (indirectly) overwrite img1's image data.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!