blending two images by Opencv

后端 未结 3 1548
执念已碎
执念已碎 2021-01-21 17:18

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 !

相关标签:
3条回答
  • 2021-01-21 17:39

    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.

    0 讨论(0)
  • 2021-01-21 17:41

    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.

    0 讨论(0)
  • 2021-01-21 17:42

    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.

    0 讨论(0)
提交回复
热议问题