blending two images by Opencv

左心房为你撑大大i 提交于 2019-12-02 05:57:29

问题


I want to align two images of different sizes using Opencv, Indeed the function cvAddWeighted enables us to combine or blend two images of identical sizes which is not my case ! so I need a help if somebody knows how to implement this function with considering the different sizes for images

thanks y.m


回答1:


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.




回答2:


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.




回答3:


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.



来源:https://stackoverflow.com/questions/3459960/blending-two-images-by-opencv

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