我需要找到图像的肩点(人体)需要帮助如何识别坐标,我能够使用imagemagick获得人体的边缘,但难以找到肩部A,B和颈部C点。
原始图片
获得边缘后的图像
答案 0 :(得分:0)
从上到下逐行扫描边缘图像。对于每一行,计算第一个边缘像素与最后一个像素之间的长度。
这一行你的长度有一个很大的变化是C点。
在找到C点之后,当斜率变化非常剧烈时,当您遇到具有肩点的行时,长度开始以线性方式上升,斜率为m。您可能需要为每一侧单独计算此斜率。
答案 1 :(得分:0)
尝试使用Image Magick形态学方法处理输入图像。详细示例为here。下面的脚本将缩小图像并将图像阈值设置为2bpp位图,然后它将尝试关闭所有间隙,并围绕形状。然后创建一个骨架,其中包含有关我们形状的一般信息。最后使用命中和未命中内核搜索特定的行结尾。在这种情况下对角线的。输出是带有一组点的图像。但是,您可以使用Image Magick的identify
打印像素位置。我还假设你或多或少知道肩膀在哪里,并且可以丢弃图像其他部分的点。识别颈部的C点可以从A和B外推。
convert -resize 25% input.jpg -negate -normalize -colorspace gray -threshold 20% -trim +dither v.png
convert v.png -morphology Close Disk x.png
convert x.png -morphology Thinning:-1 Skeleton:2 y.png
convert y.png -morphology HMT 'LineEnds:2;LineEnds:2>>' z.png
我使用了IM v.6.7.9,因为我对v7有一些问题。