Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
Clone or download
README.md 4.55 KB
Copy Edit Web IDE Raw Blame History
YeCong authored 2020-11-16 17:50 . 针对内存问题进行优化

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的传送门
  8. 在此提供Seetaface6入门教程的传送门
  9. 在此提供JSeetaface6的Gitee传送门相对活跃。
  10. 在此提供JSeetaface6的Github传送门
  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 自己的测试图片
  1. 官方提供的动态库路径以及官方提供的模型路径下载, 请前往Seetaface6,在他的文档说明中有下载地址的模块,下载并解压后 将自定义参数指向你所放路径.
  2. 查看该包下的部分测试代码进行学习使用
cn.yezhss.seetaface.demo
  1. 官方API在本项目中基本都有,方法名雷同,仅对大小写以及下划线进行转换,API可参考你刚刚下载的动态库包里有个docs文件夹,或参考Seetaface6入门教程
  2. 一般的操作方式参考如下:
// 首先创建你关注的类 此处使用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();
  1. 如有疑问便提,看到后会尽快回复

Comment ( 0 )

Sign in for post a comment