【问题标题】:Overlaying an image on another image using coordinates in C++使用 C++ 中的坐标将图像覆盖在另一个图像上
【发布时间】:2019-12-05 02:12:08
【问题描述】:

我正在尝试将第一张图片放在第二张图片的某个区域。

我尝试使用 imagemagick。我把它安装到Visual Studio 2017。我没有找到如何使用。

我尝试使用 CImg(“draw_image”函数)。我无法正确安装。因为我找不到完全告诉我的东西。

我想这样做:

第一张图片: https://ibb.co/gTRd3vz

第二张图片: https://ibb.co/bmBYP4S

例如: 我想在第一张图片的 150x150 坐标中添加第二张图片

像这样:(我用油漆做了,但不是我想要的。我在结果图片上解释) 结果图片: https://ibb.co/0Zh98fW

有人能正确地告诉我吗?如果有更好的解决方案,我想知道。 我陷入了困境。

【问题讨论】:

  • 你能总结一下你的问题是什么吗?你问怎么安装?或者如何编码?
  • 请出示 minimal reproducible example 以表明您尝试解决此问题。
  • 我无法在 Visual Studio 上安装这 2 个库。我不能将它们用于我的目的。我想学习他们两个@Drew
  • @Jesper 没有代码。我无法使用

标签: c++ visual-studio imagemagick coordinates cimg


【解决方案1】:

用于实现叠加层:

对于 ImageMagick,特别是 ,您将使用 Magick::Image.composite() 方法。

#include <Magick++.h>

int main() {
  Magick::Image first("wizard.png");
  Magick::Image second("rose.png");
  first.composite(second, 150, 150);
  first.write("output.png");
}

在 Visual Studio VC++ 项目中使用 ImageMagick:

在项目设置中,需要设置include & library目录选项来引用ImageMagick的安装位置。

VC++ Directories Property Page

【讨论】:

  • 非常感谢。另外如何读取 C:\Images 文件夹中的图像?我会使用 fopen 吗?
  • 适用于实时视频处理吗?我想像你写的那样获取框架并实现它们?
  • 我收到了 LNK2019 未解决的外部符号。我是这样写的:Magick::Image first(c:/wizard.png");
【解决方案2】:

我不确定你想要什么,你的 150x150 也不清楚。是大小还是偏移位置。以下是如何使用 ImageMagick 6 命令行为您的结果制作类似的东西。抱歉,我不知道 C++ 或 Magick.Net

1.png

2.png

convert 1.png -page +650+500 2.png -background white -mosaic result.png


对于 ImageMagick 7,将“convert”替换为“magick”。

【讨论】:

  • 如何在 Visual Studio 2017 中使用它?我无法安装此库
  • 适用于实时视频处理吗?我想像你写的那样获取框架并实现它们?
  • 还有那些“我不想要这个区域”的地方呢?
  • 我不懂 C++、Visual Studio 或 Window。请参阅 emcconville 的另一个答案。我不认为 Imagemagick 是实时处理器,尽管有些功能可以通过 GPU 运行。我不知道你说的不想要这个区域是什么意思。由于第二张图像部分偏离了第一张图像,因此不在两者上的区域必须用一些东西填充。你想让那个东西透明吗?
  • 您可以在 Visual Studio 中执行此操作吗?因为我收到了这个错误:stackoverflow.com/questions/57230208/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
  • 2012-01-15
  • 2014-07-05
  • 2019-03-04
相关资源
最近更新 更多