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 !
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.
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.
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.