爱笑的小姐姐 · 2020年11月16日

Android手机身体检测&关键点

今天给大家讲讲身体的检测及关键点。依旧先给大家展示下最终的效果:

image.png
此处为视频效果截图,完整视频请点击此处查看

人体关键点检测

下一步,我们就要讲讲这最终效果是怎么得到的呢!下面我来为大家讲解一下:

第一步,老样子,先跑去抖音找一个漂亮妹妹的跳舞视频,这次不一样了,是视频呢!
第二步,拆解视频。怎么去拆解视频呢,这里就用到一个工具ffmpeg。

cmd = "Path/ffmpeg.exe " +"-i " + name +" -f image2 -vf fps=fps=25 Image/%03d.png" 
os.popen(cmd)

通过第二步,视频已经被拆解成了一张张图片。然后我们对每一张图片都进行身体的检测及关键点的识别。

先初始化TengineKit:

KitCore.init(
                this,
                AndroidConfig
                        .create() // 创建
                        .setNormalMode() // 由于这次用的图片,所以用Normal模式 
                        .openFunc(AndroidConfig.Func.BlazePose)
                        .openFunc(AndroidConfig.Func.BlazePoseLandmark)
                        .setInputImageFormat(AndroidConfig.ImageFormat.RGBA)// 输入图像格式 
                        .setInputImageSize(Image_w, Image_h)// 设置输入的图片大小 
                        .setOutputImageSize((int)Image_w,(int)Image_h)// 设置输出的图像大小 
         );

第四步,进行身体的检测和关键点:

Body.BodyDetect bodyDetect = Body.detect(data);
List<BodyDetectInfo> bodyDetectInfos = new ArrayList<>();
List<BodyLandmarkInfo> landmarkInfos = new ArrayList<>();
if (bodyDetect.getFaceCount() >0) {
    bodyDetectInfos = bodyDetect.getDetectInfos();
    landmarkInfos = bodyDetect.landmark2d();
}
Log.d("#####","Body Num: "+ bodyDetectInfos.size());
if (bodyDetectInfos ! = null && bodyDetectInfos.size() > 0) {
    List<List<TenginekitPoint>> body_landmarks = newArrayList<>();
    for (int i = 0; i <bodyDetectInfos.size(); i++) {
        Rect rect=new Rect();
        rect = bodyDetectInfos.get(i).asRect();
        for (int j = 0; j < landmarkInfos.get(i).landmarks.size() ; j++) {
// x 为关键点X坐标, y为关键点Y坐标 
            float x = landmarkInfos.get(i).landmarks.get(j).X;
            float y = landmarkInfos.get(i).landmarks.get(j).Y;
       }
    }
}

看到上面这串代码是不是有种熟悉的感觉,没错!我们设计成了跟人脸一样的结构,方便大家去使用。有没有很贴心~

第五步,有了身体检测框及关键点,当然是进行绘制啦

你可以通过Android的Canvas进行人脸检测框及关键点的绘制,具体绘制方法,可以代码见!

第六步, 老样子!释放!

KitCore.release();

这样就结束啦。都是熟悉的配方,都是熟悉的味道,为了无限制降低您在开发过程中的成本,我们极力设计方便您使用。希望得到您的支持。有什么问题可以QQ群见,或者评论区见。

链接见下方咯:
https://github.com/OAID/Tengi...
https://github.com/Crusoekid/...


我是小O妹,一个热爱技术的长腿美少女,更多技术文章记得关注Tengine开发者社区公众号哦~啾咪

推荐阅读

更多Tengine相关内容请关注Tengine-边缘AI推理框架专栏。
推荐阅读
关注数
3393
内容数
68
Tengine是一款轻量级模块化高性能的神经网络推理引擎 ;欢迎体验Tengine,[链接] 《Tengine开发者入门资料包》[链接]
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息