Как убрать фон изображений с пакета magick?

Можно ли удалить фон изображений с помощью magick пакет?

Я знаю, как использовать обнаружение краев с Gimp/Inkscape, чтобы вырезать силуэты; Тем не менее, я хочу автоматизировать процесс для большой серии изображений с R,

Моя конечная цель - использовать ggimage пакет для построения этих изображений как x,y координаты, но фон этих изображений в настоящее время перекрывает сюжет (собака по сравнению с fink)

library("ggplot2")
library("ggimage")

set.seed(2017-02-21)
d <- data.frame(x = rnorm(10),
                y = rnorm(10),
                image = sample(c("http://www.supercoloring.com/sites/default/files/silhouettes/2015/05/cairn-terrier-black-silhouette.svg", "https://jeroenooms.github.io/images/frink.png"),
                               size=10, replace = TRUE)
                )

ggplot(d, aes(x, y)) + geom_image(aes(image=image))

выход

Можно обрезать края изображения, используя магию изображения image_trim()

img <- image_read_svg("http://www.supercoloring.com/sites/default/files/silhouettes/2015/05/cairn-terrier-black-silhouette.svg")
image_trim(img)

но это не совсем то, что я хотел бы.

Есть идеи?

1 ответ

Решение

image_transparent() функция делает это, например:

logo <- image_read("logo:")
image_transparent(logo, 'white')

Белые части изображения будут сделаны прозрачными, чего должно быть достаточно для простого изображения в вашем примере.

См . мой ответ в https://yulab-smu.github.io/treedata-book/image-processing-using-magick-package.html.

Вы можете передать функцию обработки изображений, предоставленную magick пакет в geom_image через image_fun параметр.

Другие вопросы по тегам