package com.netsdk.demo.faceDetetect;
|
|
import java.awt.image.BufferedImage;
|
import java.io.ByteArrayOutputStream;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileNotFoundException;
|
import java.io.IOException;
|
import java.io.InputStream;
|
|
import javax.imageio.ImageIO;
|
|
import com.netsdk.demo.util.CaseMenu;
|
import com.netsdk.lib.FaceDetetectSDKLib;
|
import com.sun.jna.Memory;
|
import com.sun.jna.Pointer;
|
|
/**
|
* @author 251823
|
* @version 1.0
|
* @description 分析人脸图片
|
* @date 2021/05/08
|
*/
|
public class FaceDetetctDemo {
|
|
// 初始化动态库
|
static FaceDetetectSDKLib sdkApi = FaceDetetectSDKLib.FACEDETETECTSDK_INSTANCE;
|
|
|
/**
|
* 初始化
|
* */
|
|
public void init() {
|
// 打开日志
|
//sdkApi.CLIENT_API_LogOpen();
|
/*
|
* if(!sdkApi.CLIENT_API_LogOpen()) {
|
* System.out.println("CLIENT_API_LogOpen failed!\\n-------------------------");
|
* }else { System.out.
|
* println("CLIENT_API_LogOpen success!------------------------------"); }
|
*/
|
// 第一步:初始化接口
|
// 错误信息
|
Pointer nError = new Memory(4);
|
// 配置文件路径pFliePath: ActivationCode.json/server.pem/license.dat三个文件所在路径
|
String pFliePath = "/home/netsdk/251823/DemoTest";
|
if (!sdkApi.CLIENT_API_Init(nError,pFliePath)) {
|
System.out.println("CLIENT_API_Init failed!\\n------------------------------"+nError.getInt(0));
|
cleanUp();
|
}else {
|
System.out.println("CLIENT_API_Init success!------------------------------");
|
}
|
}
|
|
/**
|
* 分析人脸图片
|
*/
|
public void analyzeFaceImage() {
|
Pointer nError = new Memory(4);
|
// 第二步:分析人脸图片
|
String imagePath = "./S_19793_1.jpg";
|
//int fileSize = 0;
|
int uImageWidth = 0;
|
int uImageHeight = 0;
|
// 获取图片大小,宽高
|
File picture = new File(imagePath);
|
try {
|
BufferedImage sourceImg = ImageIO.read(new FileInputStream(picture));
|
uImageWidth = sourceImg.getWidth();
|
uImageHeight = sourceImg.getHeight();
|
// fileSize = (int) picture.length();
|
} catch (FileNotFoundException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
// 获取图片字节流
|
InputStream is = null;
|
ByteArrayOutputStream baos = null;
|
byte[] imageByteArray = null;
|
try {
|
is = new FileInputStream(picture);
|
baos = new ByteArrayOutputStream();
|
// 3、操作(分段读取)
|
byte[] flush = new byte[1024 * 10];// 缓冲容器
|
int len = -1;// 接收长度
|
try {
|
while ((len = is.read(flush)) != -1) {
|
// 写出到字节数组中
|
baos.write(flush, 0, len);
|
}
|
baos.flush();
|
imageByteArray = baos.toByteArray();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
} catch (FileNotFoundException e) {
|
e.printStackTrace();
|
} finally {
|
// 4、释放资源
|
try {
|
if (null != is) {
|
is.close();
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
// 调算法库分析
|
Pointer pPicData = new Memory(imageByteArray.length);
|
pPicData.write(0, imageByteArray, 0, imageByteArray.length);
|
boolean flg = sdkApi.CLIENT_API_AnalyzeFaceImage(pPicData, imageByteArray.length, uImageWidth, uImageHeight, nError);
|
if(!flg) {
|
System.out.println("CLIENT_API_AnalyzeFaceImage failed!,nError ="+nError.getInt(0));
|
}else {
|
System.out.println("CLIENT_API_AnalyzeFaceImage success!------------------------------");
|
}
|
|
|
}
|
|
/**
|
* 退出清理
|
*
|
*/
|
public void cleanUp() {
|
sdkApi.CLIENT_API_CleanUp();
|
}
|
|
public void RunTest() {
|
CaseMenu menu = new CaseMenu();
|
menu.addItem(new CaseMenu.Item(this, "初始化", "init"));
|
menu.addItem(new CaseMenu.Item(this, "分析人脸图片", "analyzeFaceImage"));
|
menu.run();
|
}
|
|
public static void main(String[] args) {
|
|
FaceDetetctDemo demo = new FaceDetetctDemo();
|
demo.RunTest();
|
}
|
|
|
}
|