You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ImageMagick的convert工具获取图像的投影剖面

实现方案

方案1:直接调用ImageMagick内置算子生成(速度快,适合大尺寸图像)

你需要的投影剖面本质是图像行/列的像素值求和,可通过convert的缩放算子快速实现:

  • 生成x方向(列)投影:每个值对应该x坐标列的所有像素值总和
# 先获取图像高度,用于计算准确的像素求和结果
img_height=$(convert pp.png -format "%h" info:)
convert pp.png -colorspace Gray -scale 1x! -format "%[fx:int(p{0,%[t]} * $img_height)]\n" info:x_proj.txt
  • 生成y方向(行)投影:每个值对应该y坐标行的所有像素值总和
# 先获取图像宽度,用于计算准确的像素求和结果
img_width=$(convert pp.png -format "%w" info:)
convert pp.png -colorspace Gray -scale x1! -format "%[fx:int(p{%[t],0} * $img_width)]\n" info:y_proj.txt

如果是二值图像,输出结果直接就是对应行/列的白色像素计数;如果是灰度图像,结果就是对应行/列的灰度值总和,你可以根据需求自行做归一化处理。

方案2:转像素矩阵后自定义统计(逻辑透明,便于定制规则)

如果需要灵活调整统计逻辑(比如只统计大于某阈值的像素、做特殊加权求和等),可以先把图像导出为纯像素值文本再做统计:

  1. 导出像素值矩阵
convert pp.png -colorspace Gray -depth 8 txt: | tail -n +2 | awk '{gsub(/gray\(|\)/,"",$4); print $4}' > pixel_vals.txt
  1. 统计x方向投影
img_width=$(convert pp.png -format "%w" info:)
awk -v w="$img_width" '{col = (NR-1) % w; sum[col] += $1} END {for(i=0;i<w;i++) print sum[i]}' pixel_vals.txt > x_proj.txt
  1. 统计y方向投影
img_width=$(convert pp.png -format "%w" info:)
awk -v w="$img_width" '{row_sum += $1; if(NR % w == 0) {print row_sum; row_sum=0}}' pixel_vals.txt > y_proj.txt

内容的提问来源于stack exchange,提问作者mshaffer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:24:02