使用虹软的人脸识别 写了一个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越来越好。

【Linux】Face Recognition的封装的更多相关文章

  1. linux TCP数据包封装在SKB的过程分析

    在linux中 tcp的数据包的封装是在函数tcp_sendmsg开始的,在函数tcp_sendmsg中用到skb = sk_stream_alloc_skb(sk, select_size(sk, ...

  2. 【Linux】人脸识别的封装

    写了一个linux下的Face Recognition的封装,当作是练习.语言: C++的封装,结合opencv,使用方便.下载源码:https://github.com/zacario-li/Fac ...

  3. 笔记整理--Linux平台MYSQL的C语言

    Linux平台MYSQL的C语言API全列表 - 第三只眼的专栏 - 博客频道 - CSDN.NET - Google Chrome (2013/8/18 22:28:58)   Linux平台MYS ...

  4. Linux:写一个简单的服务器

    开始了新篇章:Linux网络编程. 基础知识: 套接字概念 Socket本身有"插座"的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型.本质为内核借助缓冲区形成的伪 ...

  5. linux服务器开发三(网络编程)

    网络基础 协议的概念 什么是协议 从应用的角度出发,协议可理解为"规则",是数据传输和数据的解释的规则. 假设,A.B双方欲传输文件.规定: 第一次,传输文件名,接收方接收到文件名 ...

  6. Linux下读写芯片的I2C寄存器

    要想在Linux下读写芯片的I2C寄存器,一般需要在Linux编写一份该芯片的I2C驱动,关于Linux下如何编写I2C驱动,前一篇文章<手把手教你写Linux I2C设备驱动>已经做了初 ...

  7. 对Linux下常用头文件总结

    asm.current.h    定义全局项current ,其指向结构体struct  task_struct linux/sched.h    定义结构体task_struct ,只要包含此头文件 ...

  8. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  9. 理解Android安全机制

    本文从Android系统架构着手,分析Android的安全机制以SE Android,最后给出一些Android安全现状和常见的安全解决方案. 1.Android系统架构 Android采用分层的系统 ...

随机推荐

  1. Jquery获取select标签的值、文本方式

    <script> function add(){            var prop_name=$("#prop").find("option:selec ...

  2. Oracle中字符串截取常用方法总结

    substr 函数:截取字符串  语法:SUBSTR(string,start, [length]) string:表示源字符串,即要截取的字符串. start:开始位置,从1开始查找.如果start ...

  3. React Native从零到一搭建开发环境

    React Native从零到一搭建开发环境 ReactNative环境搭建 安装Homebrew 安装rvm 安装nvm 安装node 安装react-native-cli 安装watchman i ...

  4. LeetCode 中级 - 组合总和(105)

    给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限制重复被选 ...

  5. LeetCode 中级 - 优势洗牌(870)

    给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述. 返回 A 的任意排列,使其相对于 B 的优势最大化. 示例 2: 输入: ...

  6. youku客户端

    文件结构 config import os IP_PORT = ('127.0.0.1',8080) BASE_DIR = os.path.dirname(os.path.dirname(__file ...

  7. 使用JDK开发WebServrice案例

    使用JDK开发WebServrice案例: 一.开发WebService服务器端 第一步:创建Java工程 ,创建相应的包(服务端)使用JDK开发(1.6以上版本) 第二步:建一个接口WebServi ...

  8. 剑指Offer-迭代

    1.大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0) 备注:斐波那契数列指的是这样一个数列从第3项开始,每一项都等于前两项之和. public st ...

  9. asp.net core上使用Redis demo

    整体思路:(1.面向接口编程 2.Redis可视化操作IDE 3.Redis服务) [无私分享:ASP.NET CORE 项目实战(第十一章)]Asp.net Core 缓存 MemoryCache ...

  10. Kibana6.3.1安装

    Kibana安装 Kibana官方下载地址: https://www.elastic.co/cn/downloads/kibana 也可以直接使用以下命令下载(文章下载目录一概为/home/tools ...