通过 Opencv 混合两个图像

发布于 2024-09-14 06:03:51 字数 127 浏览 13 评论 0原文

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

谢谢 ym

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你的呼吸 2024-09-21 06:03:51

首先,检查添加两个不同大小的图像

另一种方法是使用较小图像的宽度/高度设置较大图像上的感兴趣区域(cvSetImageROI() 将执行此操作),然后使用 执行混合cvAddWeighted()。

您可以找到一些源代码来执行此操作 此处

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/height of the smaller (cvSetImageROI() will do that), and then perform the blend with cvAddWeighted().

You can find some source code to do that here.

养猫人 2024-09-21 06:03:51

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

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

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

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.

攒一口袋星星 2024-09-21 06:03:51

您编写一个 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 的图像数据。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文