ImageMagick:扭曲和叠加

时间:2017-02-01 03:57:37

标签: imagemagick imagemagick-convert

我有几幅风景画。 在OSX上使用ImageMagick CLI,我想扭曲并正确覆盖它们。 我已经查找了几张图片和参考图片之间的失真坐标。我无法理解-distort+distort之间的差异以及它与+repage的关系。当我使用-distort时,输出具有所需的偏移但它不完整(需要更大)。当我使用+distort时,我会得到完整的图像,但它缺少偏移量。 阅读文档我明白如果我在偏移信息丢失之前在相同的命令中完成叠加组合,我可以做到没有偏移但是发生的事情是失真被应用于参考和失真的图像

这是使用-distort的结果: enter image description here

这是使用+distort的结果: enter image description here

-distort结果的偏移量在我将其应用为叠加层时会起作用(此处使用composite作为单独的命令,但它缺少了大部分图片。 enter image description here

当我尝试在单个命令中合并它时,这是我得到的结果: enter image description here

这是我目前正在使用的命令:

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时叠加的结果。 enter image description here

2 个答案:

答案 0 :(得分: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

enter image description here

答案 1 :(得分:0)

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

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

这意味着透视变形仅应用于叠加,而不是基础。因此,在上面的代码中,第一行仅处理基本图像,第二行仅处理叠加,最后一行混合两者。