如何用ImageMagick提取黑白图像最少连续顺时针外边界点?
使用ImageMagick提取黑白图像的最少顺时针外边界顶点
核心思路
先提取图像的外边界路径,再通过路径简化保留关键顶点,最后调整为顺时针顺序。
具体步骤
提取并预处理外边界
先将图像转为纯黑白,确保目标边界为前景,再去除空白边缘:convert input.png -threshold 50% -negate -trim temp.png-threshold 50%:将图像转为严格黑白,避免灰度干扰-negate:反转颜色,让黑色线条变为白色前景(ImageMagick默认提取前景轮廓)-trim:裁掉图像周围的空白区域,聚焦目标线条
简化路径并提取顺时针顶点
使用-simplify选项减少路径点数量,保留关键顶点,同时调整为顺时针顺序:convert temp.png -simplify 1.0 -reverse -format "%p" info:-simplify 1.0:路径简化阈值,数值越大保留的点越少,可根据图像从0.5~2.0之间调整-reverse:反转路径方向,确保输出的顶点为顺时针排列-format "%p" info::直接输出路径的所有顶点坐标
处理带孔洞的特殊情况
如果图像存在内部孔洞,先填充内部区域,只保留外边界:convert input.png -threshold 50% -negate -fill white -draw "color 0,0 floodfill" -trim -simplify 1.0 -reverse -format "%p" info:-fill white -draw "color 0,0 floodfill":从左上角填充内部区域,消除孔洞,仅保留外轮廓
注意事项
- 测试时先从较小的
-simplify阈值开始,逐步增大直到得到最少的关键顶点 - 若输出顶点顺序仍不符合预期,可去掉
-reverse选项尝试
内容的提问来源于stack exchange,提问作者ina
相关产品推荐
相关产品推荐

