R magick:无需向量化即可合成图像

问题描述 投票:1回答:1

image_composite R程序包中对magick功能的描述:

image_composite函数在两个图像参数上被向量化:如果第一幅图像有n帧,第二幅图像有m帧,则输出图像将包含n * m帧。

这是一个丑陋的例子:

banana <- image_read("https://jeroen.github.io/images/banana.gif")
image_composite(banana, banana, offset = "+70+00", operator = "Add")

是否有避免矢量化的方法,以便香蕉可以一起跳舞?或者,是否有其他功能(也来自其他软件包)允许这样做?

r imagemagick gif
1个回答
0
投票

如果是同一张图片,您可以修改每帧,将矢量化由内而外进行。

image_apply(
  banana, FUN = function(img) {
    image_composite(img, img, offset = "+70+00", operator = "Add")
  }
)

enter image description here

如果您有两张相同张数的图像,仅使用magick中公开的功能会比较困难。一种更简单的方法是将magick图像对象分成列表,并使用功能性编程工具,例如purrr::map2,然后再重新加入它们:

purrr::map2(
  as.list(banana), as.list(image_negate(banana)),
  ~image_composite(.x, .y, operator = "Add", offset = "+70+00")
  ) %>% 
  image_join()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.