如何用命令行工具提取灰度图50%轮廓并导出为SVG路径
解决方案
方法一:提取阈值后圆形的轮廓路径
若需提取50%阈值处理后圆形的边缘轮廓,可通过以下命令实现全自动化:
convert input.png -background white -alpha background -threshold 50% -edge 1 -negate pgm:- | potrace - --svg --fill none > result.svg
参数说明:
-background white -alpha background:将PNG的透明背景替换为白色,避免干扰边缘检测-threshold 50%:将灰度图转为二值图,保留亮度≥50%的区域-edge 1:提取二值图的边缘,生成1像素宽的轮廓线条-negate:反转颜色,让轮廓线条变为黑色、背景变为白色(适配Potrace默认识别逻辑)potrace - --svg --fill none:读取PGM格式输入,生成仅含路径描边(无填充)的SVG文件
方法二:提取50%灰度的等高线路径
若你的需求是提取原图中灰度值恰好为50%的等高线(即你所说的“50%轮廓”),可使用ImageMagick的等高线提取功能配合Potrace:
convert input.png -background white -alpha background -contour 1 -level 50%,50% -negate pgm:- | potrace - --svg --fill none > result.svg
参数说明:
-contour 1:提取图像中的灰度等高线-level 50%,50%:仅保留灰度值处于50%区间的等高线- 其余参数作用同方法一
也可通过-fx滤镜更精准地筛选目标像素:
convert input.png -background white -alpha background -fx "abs(u - 0.5) < 0.01 ? 0 : 1" pgm:- | potrace - --svg --fill none > result.svg
-fx表达式说明:筛选灰度值接近0.5(误差±1%)的像素设为黑色线条,其余设为白色背景,确保只保留目标等高线。
内容的提问来源于stack exchange,提问作者Paul Stahr
相关产品推荐
相关产品推荐

