# Java人脸识别JSeetaface6 **Repository Path**: king2147/JSeetaface6 ## Basic Information - **Project Name**: Java人脸识别JSeetaface6 - **Description**: 基于中科院seetaface6进行封装的JAVA人脸识别算法库,好用的点个星星顶我上去。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 29 - **Created**: 2021-10-28 - **Last Updated**: 2021-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JSeetaface6 #### 更新说明 2020.11.16 1. 对JNI与C++再次重新认识,对全部模块内存进一步优化,在此感谢gitee用户li_yanhui提点。 2. 在介绍处增加gitee和github的传送门,本人相对于github更经常活跃在gitee上,当然有时候gitee也找不到人,深感抱歉。 3. SeetafaceUtil.writeRect方法不再在原图上画框框,而是创建一个BufferedImage再画上框框。 4. SeetafaceUtil.show方法将窗口对象返回给调用者方便操作。 2020.09.10 1. 对JNI与C++的重新认识,针对常用的模块对内存进一步优化。 2. Java中SeetaImageData转换C++中SeetaImageData从数组拷贝改为强转以加快操作速度。 2020.08.05 1. 在resource下增加cpp文件夹,存放不忍直视的jni代码。 #### 介绍 1. 基于中科院seetaface6进行封装的JAVA人脸识别算法库。 2. 该封装仅做了java到seetaface6(c++)的连接(jni),可以让java通过resource下x64/JSeetaface6.dll直接使用seetaface6动态库。 3. 该项目只是本人初学jni的第一个作品,所以我仅会封装自己电脑的环境的windos64位系统,其他系统我还得摸索一下,除非有高人相助,否则一时半会我也提供不了,(本人仅略懂c++语法,其他一概不懂)。 4. 方法上基本与seetaface6提供的文档相同,但有一些我自认为用不上的方法,以及功能性重复的方法则省略了。并且在含有下划线,方法命名都尽量使用java的规范。 5. 该封装在~~java上以及~~动态库上,都没有对入参有任何校验,使用前需要自行判断入参的有效性。(java上已经做了入参校验) 6. 该项目没有任何依赖。 7. 在此提供[Seetaface6的传送门](https://github.com/seetafaceengine/SeetaFace6)。 8. 在此提供[Seetaface6入门教程的传送门](http://leanote.com/blog/post/5e7d6cecab64412ae60016ef)。 9. 在此提供[JSeetaface6的Gitee传送门](https://gitee.com/onionYe/JSeetaface6)相对活跃。 10. 在此提供[JSeetaface6的Github传送门](https://github.com/CongCongBig/JSeetaface6)。 11. 在此处**强调,请认真查看入门教程**,如懒得看则记住一点,你所创建的各个模块都是线程不安全的,有些安全的你若认为麻烦就都认为不安全。 12. **该项目部分接口本人暂时还未测试,仅供参考,建议在使用前自行做大量测试后投入使用。** #### 安装教程 1. 拉取本代码 2. 用idea或eclipse导入maven项目 3. 可以看项目中test目录下 ``` cn.yezhss.seetaface.demo.base.SeetafaceTest ``` 基本上一看就会,或查看下面使用说明 4. 希望能关注微信服务号: **时匆** 本人仅想打开服务号里的流量主QAQ,一般情况并不推送(本人懒) 谢谢支持 #### 使用说明 1. 以上步骤完成后,并不能立即使用,你还需下载官方提供的动态库以及识别模型。详情见 说明2 2. 需要先进入 **SeetafaceTest** 类修改自定义参数即可以开始测试,下载地址见说明3 参数 | 含义 ---|--- **DLL_PATH** | 官方提供的动态库路径 **CSTA_PATH** | 官方提供的模型路径 **TEST_PICT** | 自己的测试图片 3. 官方提供的动态库路径以及官方提供的模型路径下载, 请前往[Seetaface6](https://github.com/seetafaceengine/SeetaFace6),在他的文档说明中有下载地址的模块,下载并解压后 将自定义参数指向你所放路径. 4. 查看该包下的部分测试代码进行学习使用 ``` cn.yezhss.seetaface.demo ``` 5. 官方API在本项目中基本都有,方法名雷同,仅对大小写以及下划线进行转换,API可参考你刚刚下载的动态库包里有个docs文件夹,或参考[Seetaface6入门教程](http://leanote.com/blog/post/5e7d6cecab64412ae60016ef) 6. 一般的操作方式参考如下: ``` // 首先创建你关注的类 此处使用FaceDetector做说明 FaceDetector detector = new FaceDetector(官方face_detector.csta在你本地存放的路径); // 创建完后可直接使用. 但是入参是图片的BGR字节数组,可以使用SeetafaceUtil创建 SeetaImageData image = SeetafaceUtil.toSeetaImageData(你的图片路径); // 直接使用seetaface提供的方法 SeetaFaceInfoArray infos = detector.detect(image); // 得到的结果infos可以进行你的自定义操作 ... // 如果使用完后 您的线程需要释放,但项目并不停止则需要调用close方法 // 当然我并不建议你close掉,毕竟创建消耗资源的问题我也不累述,可以重复使用,只需要自行写个存放类进行缓存 detector.close(); ``` 7. 如有疑问便提,看到后会尽快回复