人像提取之PaddleSeg的http实现

     上一次分享,大家可能对paddleseg的人像分割效果记忆犹新。最近抽时间学习了一下它的demo,然后基于http协议进行了重构,将本地的调用发布成http, 这样跨语言就比较轻量级的调用。先贴一个源码截图,


关键代码片断

基本流程说明一下:初始化Predictor对象---》加载背景图片(红,蓝,白)---》合成新的图片

梳理清楚之后,我重新整理了整个代码逻辑,将核心方法进行了组装。



A:最外层的HTTP封装


HTTP封装

seg方法就是完成对外的人像图片提取及背景色替换,并以base64串返回。其中get_img是获取本地上传图片流,同时路径参数增加背景色填充。最后调用server.segimage(img,bgcolor_type)的核心方法完成处理

B:本地上传流到服务器流的转换


流转换

C:服务器流的处理及背景参数处理


流读取及图片生成

首先将流通过np转换成mat,bgtype目前支持红,蓝,白底。读取相应路径的背景图片,也转换成mat。最后打包塞给run方法,最后返回是一个合成后的mat。这里要提一下numpy_to_base64,它主要是将mat转换成base64,这样异构语言也能很方便的进行解析。

D:主函数声明


主函数

这里算是有点面像对象的意思,最后通过天生面像对像的JAVA语言来调用。


代码示例




大功告成,python的确实简约强大。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容