java 虹软ArcFace 2.0,java SDK使用-进行人脸检测
虹软产品地址:http://ai.arcsoft.com.cn/product/arcface.html
虹软ArcFace功能简介
人脸检测
人脸跟踪
人脸属性检测(性别、年龄)
人脸三维角度检测
人脸对比
示例代码说明,其中图片操作部分用到了javacv,javacv中针对opencv进行了一些封装,可以很好的对图片进行处理。此处主要用到了opencv的几个函数
加载图片
IplImage img = cvLoadImage("e:/pic/g5.jpg");
格式转换,将IplImage 转为Mat,
OpenCVFrameConverter.ToMat converterToMat = new OpenCVFrameConverter.ToMat();
Mat mat = converterToMat.convert(converterToMat.convert(img)); 对图片,增加矩形框,此处用来圈出人脸的位置
rectangle(mat, new Rect(mrect.left,mrect.top,mrect.right-mrect.left,mrect.bottom-mrect.top), new Scalar(0, 255, 0, 1)); 将mat数据,写入图片文件中
imwrite("e:/pic/detected.jpg", mat);
示例代码如下:
package com.arcsoft.face; import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;
import static org.bytedeco.javacpp.opencv_imgcodecs.imwrite;
import static org.bytedeco.javacpp.opencv_imgproc.rectangle; import org.bytedeco.javacpp.BytePointer;
import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacpp.opencv_core.Mat;
import org.bytedeco.javacpp.opencv_core.Rect;
import org.bytedeco.javacpp.opencv_core.Scalar;
import org.bytedeco.javacv.OpenCVFrameConverter; import com.sun.jna.NativeLong;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.PointerByReference; public class FaceDetectTest { public static void main(String[] args) {
FaceEngine ins = FaceEngine.INSTANCE; //SDK激活
ins.ASFActivation("6iYHk9hRsCNBJvFY7qhpaxnmmpFPnjWWpboYSafaz5hN", "GRwuiEVRTyeRUCHyihMP1B8Xf59zsQBtdZSbeQtfWWhg");
PointerByReference phEngine = new PointerByReference(); //SDK初始化,需要设置模式是video,还是image,配置人脸检测的角度,engine需要支持的功能 mask,最大支持的人脸数量50,人脸大小16
int mask = FaceEngine.ASF_FACE_DETECT | FaceEngine.ASF_FACERECOGNITION | FaceEngine.ASF_AGE | FaceEngine.ASF_GENDER | FaceEngine.ASF_FACE3DANGLE;
NativeLong ret = ins.ASFInitEngine(FaceEngine.ASF_DETECT_MODE_IMAGE, OrientPriority.AFD_FSDK_OPF_0_ONLY, 16,50, mask, phEngine);
if (ret.longValue() != FaceEngine.MOK) {
System.out.println(ret.longValue());
} //获取图片数据,此处使用javacv中封装的对应opencv的方法完成
IplImage img = cvLoadImage("e:/pic/g5.jpg");
BytePointer bp = img.arrayData();
byte[] imgData = new byte[img.arraySize()];//图片数据
bp.get(imgData); //获得engine对应的指针
Pointer hEngine = phEngine.getValue(); //当前系统版本
Version version = ins.ASFGetVersion(hEngine);
System.out.println(version.Version);
System.out.println(version.CopyRight);
System.out.println(version.BuildDate); //进行人脸检测,detectedFaces为输出项
MultiFaceInfo detectedFaces = new MultiFaceInfo();
ins.ASFDetectFaces(hEngine, img.width(), img.height(), ASVL_COLOR_FORMAT.ASVL_PAF_RGB24_B8G8R8,imgData, detectedFaces); System.out.println("detected face num:"+detectedFaces.faceNum); //使用opencv的api对照片进行处理,将人脸区域画出来,保存为一张新图片
OpenCVFrameConverter.ToMat converterToMat = new OpenCVFrameConverter.ToMat();
Mat mat = converterToMat.convert(converterToMat.convert(img));
MRECT[] rects = detectedFaces.getFaceRects();
for (MRECT mrect : rects) {
rectangle(mat, new Rect(mrect.left,mrect.top,mrect.right-mrect.left,mrect.bottom-mrect.top), new Scalar(0, 255, 0, 1));
}
imwrite("e:/pic/detected.jpg", mat);
} }
待做人脸检测的图片
程序识别后,并标识出人脸位置后,效果看起来很棒
再找一张人脸特别多的图片,准确圈出所有人脸位置
使用已经封装好的SDK进行人脸识别
https://www.jianshu.com/p/96636db03792
使用已经封装好的SDK进行人脸识别【人脸特征提取比对】
https://www.jianshu.com/p/ab64464571da
虹软ArcFace 2.0,java SDK使用、人脸信息识别(年龄、性别)
https://www.jianshu.com/p/cfe90f82be97
java 虹软ArcFace 2.0,java SDK使用-进行人脸检测的更多相关文章
- java 虹软ArcFace 2.0,java SDK使用、人脸识别-抽取人脸特征并做比对
java人脸识别 虹软ArcFace 2.0,java SDK使用.人脸识别-抽取人脸特征并做比对 虹软产品地址:http://ai.arcsoft.com.cn/product/arcface.ht ...
- JAVA基础学习——1.0 Java概述
Java语言 SUN公司 1995年推出的高级编程语言 ■ 主要应用方向 Web开发和Android开发 ■ 主要特点 平台无关性:能运行于不同的平台上 安全性:去掉了指针操作,内存由操作 ...
- Java离线人脸识别SDK 支持arcface 2.0 最新版
虹软人脸识别SDK之Java版,支持SDK 1.1+,以及当前最新版本2.0,滴滴,抓紧上车! JDK SDK Win release license status 前言 由于业务需求,最近跟人脸识别 ...
- 虹软人脸识别ArcFace2.0 Android SDK使用教程
一.获取SDK 1.进入ArcFace2.0的申请地址 https://ai.arcsoft.com.cn/product/arcface.html 2.填写信息申请并提交 申请通过后即可下载SDK, ...
- 基于虹软人证核验 2.0 Android SDK开发集成入门
一.功能介绍虹软人证核验 2.0 SDK(以下简称SDK)包含人脸检测.人脸跟踪.人证核验等能力,主要实现人证的1:1比对.其中暴露对外的功能方法有:active 引擎激活init 引擎初始化inpu ...
- 离线人脸识别 ArcFaceSharp -- ArcFace 2.0 SDK C#封装库分享
ArcFaceSharp ArcFaceSharp 是ArcSoft 虹软 ArcFace 2.0 SDK 的一个 C# 封装库,为方便进行 C# 开发而封装.欢迎 Start & Fork. ...
- Java SE之浅谈JDK SDK JRE
JDK(Java Development Kit): 1.定义:编写Java程序的程序员使用的软件开发工具包,又被称为Java SDK (Java Software Development Kit ...
- IDEA查看第三方jar包的源代码时出现Decompiled.class file, bytecode version:52.0 (Java 8)的解决方案
IDEA中使用Ctrl+左键查看第三方jar包的源代码时,出现Decompiled.class file, bytecode version:52.0 (Java 8),说明IDEA没找到该类的.ja ...
- 如何使用 python 接入虹软 ArcFace SDK
公司需要在项目中使用人脸识别SDK,并且对信息安全的要求非常高,在详细了解市场上几个主流人脸识别SDK后,综合来看虹软的Arcface SDK比较符合我们的需求,它提供了免费版本,并且可以在离线环境下 ...
随机推荐
- JavaScript document open() 方法:打开一个新文档
<html> <head> <script type="text/javascript"> function createNewDoc() { ...
- linux nfs服务配置挂载以及oracle使用nfs存储挂载注意事项
服务端共享目录 /home/XXX/nfs_shared 172.16.22.0/24(rw,no_root_squash) service nfs restart 常用命令: 查看所有nfs共享目录 ...
- 我是这样做APP的:击中用户的痛点(转)
击中用户的痛点 点评,感觉取名叫做“用户痛点的取舍”更加合适.很多公司.项目的失败完全取决于决策人取舍的失败,一味地追求大而全.迎合上级领导,专断而没有和团队做客观的分析.本文虽然以一个应该来说并不复 ...
- U盘中病毒,文件消失或不显示
最近非常流行的一个病毒,将电脑或者U盘里的文件全部用快捷方式替换,真实文件被隐藏起来,下面我们就具体了解下此种病毒吧,做好预防与杀毒工作. 一.病毒名称 病毒名称:移动盘同名文件夹病毒;文件夹EXE病 ...
- Linux使用退格键时出现^H + Tab键命令补全失效/方向键失效 + ls文件夹和文件没有颜色
删除问题 安装kalilinux使用普通用户的的时候按退格键无法实现删除功能 解决的办法有两个 一改变快捷键: 使用Ctrl+Backspace组合键可以实现删除功能 ctrl + backspace ...
- 问题:oracle 12c rac数据库服务器的home目录丢失问题解决2018-06-25 18:30
问题原因:是由于运维粗心,在缩容/home(此目录下挂载了逻辑卷lv_home)时没有先缩小文件系统(resize2fs)也没有备份,导致home数据损坏,重启时系统无法正常启动 解决方案:跳过此ho ...
- bzoj 3325 密码 - Manacher
题目传送门 需要root权限的传送点 题目大意 已知一个串,以每个字符为中心的最长回文串长,以及每两个字符中间为中心的最长回文串长.求字典序最小的这样一个串.题目保证有解. 考虑Manacher的过程 ...
- bzoj 2527 Meteors - 整体二分 - 树状数组
Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...
- CSS的再一次深入(更新中···)
全面我们学了6个选择器,今天再来学习两个选择器,分别是通配符选择器和并集选择器: 1.通配符选择器: *{ } 表示body里所有的标签都被选中 2.并集选择器: 选中的标签之间用逗号隔开,表示这几个 ...
- 【问题解决:时区】连接MySQL时错误The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone
问题描述: MySQL升级到8.0.11之后连接数据库报错: Your login attempt was not successful, try again. Reason: Could not g ...