问题
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