【问题标题】:ImageMagick: Distort and OverlayImageMagick:扭曲和叠加
【发布时间】:2017-02-01 03:57:37
【问题描述】:

我有几张风景照片。 在 OSX 上使用 ImageMagick CLI,我想正确地扭曲和覆盖它们。 我已经在几张图片和一张参考图片之间寻找失真坐标。我无法理解-distort+distort 之间的区别以及它如何与+repage 一起使用。当我使用-distort 时,输出具有所需的偏移量,但它不完整(它需要更大)。当我使用+distort 时,我得到了完整的图像,但它缺少偏移量。 阅读文档后,我知道如果在偏移信息丢失之前在同一命令中进行叠加合成,我可以不使用偏移,但发生的情况是扭曲同时应用于参考图像和扭曲图像。

这是使用-distort的结果:

这是使用+distort的结果:

-distort 结果的偏移量在我将其作为覆盖应用后将起作用(此处在单独的命令中使用 composite,但它缺少图片的很大一部分。

当我试图将它整合到一个命令中时,我得到的结果是:

这是我当前使用的命令:

convert base.jpg overlay.jpg
 -matte -virtual-pixel transparent -distort Perspective '961,1695 1856,2461   2279,1520 3185,2303   3564,2173 4441,2970   1547,2817 2441,3594'
 -compose blend -define compose:args=50,100 -composite result.jpg

我知道我可以在那里使用括号,但我看不到应该把它们放在哪里。

谢谢!

更新:这是在 Mark 建议的两步或单步中使用 +distort 时叠加的结果。

【问题讨论】:

  • 请注意,base.jpg 是带有白色大边框的灰度图片,足以包含所有其他图片。最后一张图片中的黑色边框是由于transparent不支持jpg
  • 据我记得 +distort 扩展画布以保存扭曲的图像,如果它延伸到当前画布之外。 -distort 如果图像超出当前画布,则将其截断。
  • @Bonzo 这正是我阅读文档的方式,它实际上扩展了画布,因此保存了整个图像,但另外它修剪了我实际上需要在之后正确覆盖图像的偏移量。如果我能保持这个偏移量就可以解决我的问题。

标签: imagemagick imagemagick-convert


【解决方案1】:

解决方案是使用-flatten 而不是-composite

convert base.jpg \( b.jpg -matte -virtual-pixel transparent +distort Perspective '961,1695 1856,2461   2279,1520 3185,2303   3564,2173 4441,2970   1547,2817 2441,3594' \) -compose blend -define compose:args=100,50 -flatten result.jpg

原来-composite 忽略了图像偏移,而-flatten 处理图层并使用偏移信息。

建议来自这个帖子:http://www.imagemagick.org/discourse-server/viewtopic.php?t=20157

这是flatten 的文档(链接在上面的讨论中断开):http://www.imagemagick.org/Usage/layers/#flatten

【讨论】:

    【解决方案2】:

    不确定我是否理解这些问题,但建议您试试这个(未经测试):

    convert base.jpg \ 
       \( overlay.jpg -matte -virtual-pixel transparent -distort Perspective '961,1695 1856,2461   2279,1520 3185,2303   3564,2173 4441,2970   1547,2817 2441,3594' \) \
       -define compose:args=50,100 -compose blend -composite result.jpg
    

    这意味着透视失真仅应用于叠加层,而不是基础。所以,在上面的代码中,第一行只处理基础图片,第二行只处理叠加层,最后一行混合了两者。

    【讨论】:

    • 谢谢。这就像我运行了两个单独的命令并且仍然“裁剪”或“重置”偏移量一样。就像我使用 +distort 时默认应用 +repage 选项一样,但我看不到如何显式禁用它。我添加了使用 +distort 运行命令的附加结果
    猜你喜欢
    • 2022-01-07
    • 2012-03-30
    • 1970-01-01
    • 2017-03-14
    • 2018-11-02
    • 2018-12-11
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多