2010-08-11 105 views
2

我想使用Opencv对齐不同尺寸的两幅图像, 事实上,函数cvAddWeighted使我们能够合并或混合两幅相同大小的图像,这不是我的情况! 所以我需要一个帮助,如果有人知道如何实现此功能与 考虑图像通过Opencv混合两幅图像

感谢 y.m

+0

您是否有兴趣重新调整一个图像以保持与另一个图像相同的尺寸? – karlphillip 2010-08-11 15:38:43

回答

5

首先,检查Adding Two Images with Different Size不同的尺寸。

另一种方法是使用较小的宽度/高度(cvSetImageROI()将会这样做)设置较大图像的感兴趣区域,然后使用cvAddWeighted()执行混合。你会发现一些源代码来做到这一点,here

2

我猜你有两个图像需要对齐。您还将获得一张图片需要被移动的数量。

您可以创建一个新的图像,在移动后可以包含这两个图像。这意味着,它将是原始图像的高度+垂直位移,其宽度将是原始水平位移的宽度。

然后,您可以在此图像上设置ROI并复制图像。

+1

+1我是Aishack的忠实粉丝....我从中学到了很多东西......我能得到如何在3D中获得头部旋转的信息,我需要知道3角... – Wazzzy 2011-12-07 09:15:27

0

你写了一个Rect_from_Mat函数,它返回Rect(0,0,img.rows,img.cols)。

然后:

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; 
} 

注意 'addWeighted' 线将(间接地)覆盖IMG1的图像数据。