通过Opencv混合两个图像

时间:2010-08-11 15:20:47

标签: visual-c++ opencv image-processing blending

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

感谢 y.m

3 个答案:

答案 0 :(得分:5)

首先,请检查Adding Two Images with Different Size

另一种方法是使用较小的宽度/高度设置感兴趣的区域(cvSetImageROI()将这样做),然后使用cvAddWeighted()执行混合。您可以找到一些源代码和here

答案 1 :(得分:2)

我猜你有两张需要对齐的图片。您还需要替换一个图像的数量。

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

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

答案 2 :(得分: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的图像数据。