虹软人脸识别 - 人脸特征数据的存取

本文介绍如何使用虹软ArcFace SDK与SQLite或MySQL数据库存储和识别人脸特征。内容包括数据库连接、建表、注册人脸、识别人脸的步骤,并提供了使用Qt编写的示例代码。
摘要由CSDN通过智能技术生成

虹软人脸识别 - 人脸特征数据的存取

一、简介

人脸识别在社会中应用越来越多,提供人脸识别的 API 的公司也很多,如百度、商汤、Face++、虹软、微软等。在简单了解了这些不同企业提供的产品后,发现只有虹软是提供免费离线 SDK 的。使用在线 API,因为网络延迟实时性跟不上。刚开始用的时候还是 2.0 版本,现在已经 3.0 了,实测效果确实不错。在 3.0 后还可以在视频中追踪人脸,避免后重复识别提高了性能。

在网上关于 ArcSoft人脸识别 SDK — ArcFace 的开发教程已经很多了,而且 SDK 自带的官方文档也非常简单易懂,就不再重复介绍了。本文的主要内容是怎么使用
SDK 并结合数据库(可选 SQLite 和 MySQL)来保存人脸特征数据以及怎么使用这些特征,中间还包含了和人脸特征相关的部分 API 的使用。

在本文末提供了使用 ArcFace、Qt 编写的示例代码。

二、数据库应用

将数据库的操作封装为一个类,下面介绍封装类的具体实现。

1. 连接数据库

使用封装好的数据库对象连接数据库,具体的细节如下:

  • 使用 SQLite

连接数据库的接口(构造函数)


DatabaseSQLite(QString const & database_name);

实现


database_ = QSqlDatabase::addDatabase("QSQLITE", database_name);

database_.setDatabaseName(database_name);

database_.open();
  • 使用 MySQL

连接数据库的接口(构造函数)


DatabaseMySQL::DatabaseMySQL(

    QString const & host_name,

    QString const & user_name,

    QString const & password,

    QString const & database_name

);

实现


database_ = QSqlDatabase::addDatabase("QMYSQL", database_name);

database_.setHostName(host_name);

database_.setUserName(user_name);

database_.setPassword(password);

database_.setDatabaseName(database_name);

database_.open();

2. 建表

在连接上数据库后,如果数据库中不存在相应的表结构,需要立即创建相应的表来存放数据。

  • 使用 SQLite

建表


auto query = QSqlQuery(database_);

query.exec(

    "CREATE TABLE IF NOT EXISTS
features("           "\n"

    "   
id      INTEGER PRIMARY KEY
AUTOINCREMENT," "\n"

    "    name   
VARCHAR(32),"                      
"\n"

    "    feature BLOB"                               "\n"

    ");"

);
  • 使用 MySQL

建表


auto query = QSqlQuery(database_);

query.exec(

    "CREATE TABLE IF NOT EXISTS
features("            "\n"

    "    id     
INTEGER PRIMARY KEY AUTO_INCREMENT," "\n"

    "    name   
VARCHAR(32),"                       
"\n"

    "    feature BLOB"                                "\n"
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值