【发布时间】:2020-04-26 04:55:14
【问题描述】:
可以识别图像的边缘like so:
library('ggplot2')
library('imager')
plot(boats)
img <- cannyEdges(boats)
plot(img)
但是假设我们想要对 svg(下面以长颈鹿为例)做同样的事情,而不是 'boats' 对象,我们如何找到 svg 图像的边缘?
我尝试了显而易见的:
library(magick)
giraffe <- image_read_svg("http://steveharoz.com/research/isotype/icons/giraffe.svg")
plot(giraffe)
gimg <- cannyEdges(giraffe)
# Error in if (has.col) { : argument is of length zero
注意
我最终要做的是自动将 svg 格式的图像(如长颈鹿)转换为scatterplotting in a geom_point() 的一组笛卡尔坐标,如下所示:
library(datasauRus)
library(ggplot2)
datasaurus_dozen %>%
filter(dataset == "dino") %>%
ggplot(aes(x=x, y=y))+
geom_point()
最终目标是让长颈鹿变成像上面的恐龙一样的geom_point()
【问题讨论】:
-
在 SVG 格式中,线条是由锚点和切线定义的 Bézier 样条线,并且由于锚点在构造上位于绘制的线上,因此仅使用锚点就足够了。如果它们相距太远,很容易计算中间点(Casteljau 方法或其他方法)。
-
@xenoid 听起来很迷人。您能否展示如何在 R 中实现这一点的 MRE?
-
-
@xenoid 非常有趣。对于 OP:这似乎是相关的。 stackoverflow.com/questions/10136289/…
标签: r ggplot2 imagemagick