制作一个在线人脸检测工具

基于Flask和BaiduAPI

食用地址: http://face.loopy.tech

实现路径是:

  • 使用flask_uploads来上传图片
    • 设置上传图片存储位置:config[‘UPLOADED_PHOTOS_DEST’]
    • 文件类型过滤:创建一个set(UploadSet()类),然后使用configure_uploads()方法注册并完成相应的配置
    • 限制文件大小:导入patch_request_class()函数,传入应用实例和大小
    • 对文件重命名
  • 使用BaiduAPI来处理人脸
    • 实例化预设工具类
    • 获得APIToken
    • 检查是否为人脸库里的脸:自定义same_face函数
      • 图片转为base64格式:调用base64包
      • 调用BaiduAPI进行人脸识别: 构造请求头,然后使用flask-request
    • 图片转为base64格式:调用base64包
    • 调用BaiduAPI进行人脸处理: 构造请求头,然后使用requests
    • 处理返回数据: 用预设字典对返回数据进行翻译
    • 画脸部轮廓图:使用PIL库画点,然后保存到临时文件夹
    • 将结果呈现到网页中:render_template调用预设html模板

TODO:

  1. 几个功能模块是用以前的代码拼凑的,导致引用的包混乱
  2. 将BaiduAPI换为本地实现(虽能实现,但搁置:节省服务器资源)

代码可见:Github仓库

参考资料:

  1. https://zhuanlan.zhihu.com/p/41059137
  2. https://zhuanlan.zhihu.com/p/24418074
  3. https://blog.csdn.net/GeekLeee/article/details/52505605
  4. https://stackoverflow.com/questions/31884903/flask-uploads-always-throwing-uploadnotallowed-error-even-with-no-constraints
  5. http://ai.baidu.com/docs
本文总字数: 822