1
zhanghua
2024-09-26 c775c6953d9759e70f08acbfa8f6d7490aaae3d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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();                
    }
 
    
}