2020.11.16
- 对JNI与C++再次重新认识,对全部模块内存进一步优化,在此感谢gitee用户li_yanhui提点。
- 在介绍处增加gitee和github的传送门,本人相对于github更经常活跃在gitee上,当然有时候gitee也找不到人,深感抱歉。
- SeetafaceUtil.writeRect方法不再在原图上画框框,而是创建一个BufferedImage再画上框框。
- SeetafaceUtil.show方法将窗口对象返回给调用者方便操作。
2020.09.10
- 对JNI与C++的重新认识,针对常用的模块对内存进一步优化。
- Java中SeetaImageData转换C++中SeetaImageData从数组拷贝改为强转以加快操作速度。
2020.08.05
- 在resource下增加cpp文件夹,存放不忍直视的jni代码。
- 基于中科院seetaface6进行封装的JAVA人脸识别算法库。
- 该封装仅做了java到seetaface6(c++)的连接(jni),可以让java通过resource下x64/JSeetaface6.dll直接使用seetaface6动态库。
- 该项目只是本人初学jni的第一个作品,所以我仅会封装自己电脑的环境的windos64位系统,其他系统我还得摸索一下,除非有高人相助,否则一时半会我也提供不了,(本人仅略懂c++语法,其他一概不懂)。
- 方法上基本与seetaface6提供的文档相同,但有一些我自认为用不上的方法,以及功能性重复的方法则省略了。并且在含有下划线,方法命名都尽量使用java的规范。
- 该封装在
java上以及动态库上,都没有对入参有任何校验,使用前需要自行判断入参的有效性。(java上已经做了入参校验) - 该项目没有任何依赖。
- 在此提供Seetaface6的传送门。
- 在此提供Seetaface6入门教程的传送门。
- 在此提供JSeetaface6的Gitee传送门相对活跃。
- 在此提供JSeetaface6的Github传送门。
- 在此处强调,请认真查看入门教程,如懒得看则记住一点,你所创建的各个模块都是线程不安全的,有些安全的你若认为麻烦就都认为不安全。
- 该项目部分接口本人暂时还未测试,仅供参考,建议在使用前自行做大量测试后投入使用。
- 拉取本代码
- 用idea或eclipse导入maven项目
- 可以看项目中test目录下
cn.yezhss.seetaface.demo.base.SeetafaceTest
基本上一看就会,或查看下面使用说明 4. 希望能关注微信服务号: 时匆 本人仅想打开服务号里的流量主QAQ,一般情况并不推送(本人懒) 谢谢支持
- 以上步骤完成后,并不能立即使用,你还需下载官方提供的动态库以及识别模型。详情见 说明2
- 需要先进入 SeetafaceTest 类修改自定义参数即可以开始测试,下载地址见说明3
参数 | 含义 |
---|---|
DLL_PATH | 官方提供的动态库路径 |
CSTA_PATH | 官方提供的模型路径 |
TEST_PICT | 自己的测试图片 |
- 官方提供的动态库路径以及官方提供的模型路径下载, 请前往Seetaface6,在他的文档说明中有下载地址的模块,下载并解压后 将自定义参数指向你所放路径.
- 查看该包下的部分测试代码进行学习使用
cn.yezhss.seetaface.demo
- 官方API在本项目中基本都有,方法名雷同,仅对大小写以及下划线进行转换,API可参考你刚刚下载的动态库包里有个docs文件夹,或参考Seetaface6入门教程
- 一般的操作方式参考如下:
// 首先创建你关注的类 此处使用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();
- 如有疑问便提,看到后会尽快回复