【发布时间】:2016-02-17 21:56:21
【问题描述】:
假设有一个 svg,中间有一个封闭的填充矩形,周围有一个 2 点的空白。
<path d="M2 2 H 3 V 3 H 2 Z" fill="transparent" stroke="black"/>
所以我想将其表示为一个二维矩阵,其中所有空白区域都表示为 0,而黑色空间(覆盖区域)表示为 1。所以对于这个示例,它应该是 -
[
[0, 0, 0, 0],
[0, 1, 1, 1],
[0, 1, 1, 1],
[0, 1, 1, 1]
]
这是一条简单的路径,但我正在尝试找到一种适用于包括贝塞尔曲线在内的复杂路径的方法。实际上,我正在尝试将 SVG 世界地图转换为 0-1 矩阵,以便可以在其上运行一些 AI 算法。
【问题讨论】:
-
这是不可能的。好吧,这不是“不可能”,但是...在 0-1 矩阵中转换简单路径的想法还不错,但是贝塞尔曲线简直是“奇怪”。你怎么能/你会定义你想要保持的曲线精度?例如,在一个小区域上定义一条曲线,起点和终点可能就足够了,但是如果曲线很宽并且您希望它保持良好的精度,您可能需要几个点来用您的矩阵来表示它。 ..
-
可以说每个数组元素代表一个 1 * 1 px 的 。如果
svg path passes across that pixel或that pixel (/ part of that px) falls under the closed area则它得到1的值,否则0 -
是的,知道了,但是精度呢?贝塞尔曲线可以代表无限多的点……这就是 svg,矢量点!您可以根据需要调整其大小,这种格式并没有真正的“像素大小”限制......
-
绘制画布路径并读取像素值。
标签: algorithm image-processing svg