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比较符合我们的需求,它提供了免费版本,并且可以在离线环境下 ...
随机推荐
- django中表单处理
在web端与后端交互时,我们除了使用html原生的form标签,还可以使用django自带的表单. Django 提供广泛的工具和库来帮助你构建表单来接收网站访问者的输入,然后处理以及响应输入. HT ...
- 【题解】Luogu CF86D Powerful array
原题传送门 裸的莫队啊,我博客里有对莫队较详细的介绍 这道题很简单,可以说是裸的模板 但是如何在已有的值上进行操作? 小学生应该都知道 那么转移就超级简单了qaq inline void add(re ...
- 维护keepalived与mysql漂移脚本
环境拓扑 chengAlived #!/bin/bash function checkModelone(){ echo "重新进行获取" wget 192.168.158.147: ...
- 20145308 《网络对抗》 逆向及BOF基础实践 学习总结
20145308 <网络对抗> 逆向及BOF基础实践 学习总结 实践目的 通过两种方法,实现程序能够运行原本并不会被运行的代码 实践原理 利用foo函数的Bof漏洞,构造一个攻击输入字符串 ...
- Codeforces Round #479 (Div. 3)题解
CF首次推出div3给我这种辣鸡做,当然得写份博客纪念下 A. Wrong Subtraction time limit per test 1 second memory limit per test ...
- 鼠标滑轮事件QWheelEvent
一般鼠标滑轮事件会发出信号,参数是QWheelEvent,只需要新建槽函数,QWheelEvent作为参数. void myMouseWheelEvent(QWheelEvent* even) {)/ ...
- Python3基础 list insert 在指定位置挤入一个元素
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 【做题】arc080_f-Prime Flip——转换、数论及匹配
题意:有一个无限序列,其中有\(n\)个位置上的数为\(1\),其余都是\(0\).你可以进行若干次操作,每次选取序列上的一个区间\([l,r)\),满足\(r-l\)为奇质数,将在这个区间上的数都异 ...
- Shiro源码分析
1.入口类:AbstractAuthenticator 用户输入的登录信息经过其authenticate方法: public final AuthenticationInfo authenticate ...
- java 反射工具
<dependency> <groupId>org.reflections</groupId> <artifactId>reflections</ ...