zoukankan      html  css  js  c++  java
  • 【Linux】人脸识别的封装

    写了一个linux下的Face Recognition的封装,当作是练习。
    语言: C++的封装,结合opencv,使用方便。
    下载源码:
    https://github.com/zacario-li/FaceRecognition-with-ArcSoftLib
    整体来说,ArcSoft的提供的FaceEngine已经很好用了,接口非常简洁,不过对于一个不熟悉的使用者来说,还是会对ArcSoft那些接口的参数类型感到头晕,至少我一开始就是这样的。
    基于这样的想法,我才有了对该FaceEngine封装的想法。
    封装的思路如下:
    1. 基于C++,避免不必要的内存泄漏
    2. 基于OpenCV,但凡跟图像扯上关系,难免用上通用型的计算机视觉库,所以选择OpenCV
    3. 基于最简单的使用逻辑,整个封装一共4个主要函数: Start(), Stop(), BuildFeatureList(), GetFaceIDScore();
    当然还配套了一些附加功能的函数,这个主要是为了自己使用方便。上述public函数设计,使用极其简单,但凡有点软件基础的都能轻松使用。
    P.S. 给AcrSoft的FaceEngine一点建议:

    文档中,对于LPAFD_FSDK_FACERES, AFR_FSDK_FACEMODEL 两个类型定义的解释很少,很容易让用户产生误解。
    在我看来,像AFR_FSDK_FACEMODEL.pbFeature 这个指针,从接口中带出来Feature数据,看起来像是存储在arcsoft库中的某个全局变量中的,这个就要求用户获取到feature后,必须立马copy到其它内存区域。这一点,文档中并没有提及。

    summary:
    1. 优化接口使用方式,用尽量简便的接口提供给用户。
    2. 添加代码注释,对于sample代码的设计给出详细的解释,并标注上一般使用可能会遇到的问题
    ArcSoft的FaceEngine免费给大家用,真的是佛心,希望ArcSoft越来越好。

  • 相关阅读:
    jqueryautocomplete
    了解CSS的查找匹配原理 让CSS更简洁、高效
    html5网页编码
    刚开始学习 mvc碰到的郁闷问题
    datatable 批量插入方法 求解?
    28个经过重新设计的著名博客案例(1120)
    递归调用中的return
    C++新建一个模板
    C++ 中用 sizeof 判断数组长度
    为什么MySQL选择REPEATABLE READ作为默认隔离级别?
  • 原文地址:https://www.cnblogs.com/Zzz-/p/10558925.html
Copyright © 2011-2022 走看看