依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 87|回复: 0

基于中科院seetaface2进行封装的JAVA人脸识别库,支持人脸识别、1:1比对、1:N比对

[复制链接] 主动推送

1万

主题

1万

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12071
发表于 2024-9-5 11:43:48 | 显示全部楼层 |阅读模式
基于中科院seetaface2进行封装的JAVA人脸识别库,支持人脸识别、1:1比对、1:N比对
项目介绍
基于中科院seetaface2进行封装的JAVA人脸识别算法库,支持人脸识别、1:1比对、1:N比对。
seetaface2:附件中包含此源码
环境配置
1、下载model
2、下载doc目录中对应的lib包到本地并解压:Windows(64位)环境下载lib-win-x64.zip、Linux(64位)下载lib-linux-x64.tar.bz2,Linux环境还需要安装依赖库,详见:https://my.oschina.net/u/1580184/blog/3042404
3、将doc中的faces-data.db下载到本地;(PS:如果不需要使用1:N人脸搜索,不需要此文件,需要将seetafce.properties中的sqlite.db.file配置注释掉);
4、将src/main/resources/中的seetaface.properties文件放到项目的resources根目录中;
  1. #linux系统中依赖的lib名称
  2. libs=holiday,SeetaFaceDetector200,SeetaPointDetector200,SeetaFaceRecognizer200,SeetaFaceCropper200,SeetaFace2JNI
  3. #Windows系统中依赖的lib名称
  4. #libs=libgcc_s_sjlj-1,libeay32,libquadmath-0,ssleay32,libgfortran-3,libopenblas,holiday,SeetaFaceDetector200,SeetaPointDetector200,SeetaFaceRecognizer200,SeetaFaceCropper200,SeetaFace2JNI

  5. #lib存放目录
  6. libs.path=/usr/local/seetaface2/lib
  7. #model存放目录
  8. bindata.dir=/usr/local/seetaface2/bindata

  9. ##sqlite配置(如果不用1:N人脸搜索功能,请删除下面5项sqlite开头的配置)
  10. sqlite.db.file=/data/faces-data.db
  11. sqlite.conn.maxTotal=50
  12. sqlite.conn.maxIdle=5
  13. sqlite.conn.minIdle=0
  14. sqlite.conn.maxWaitMillis=60000
复制代码
5、将seetafaceJNI-2.0.jar和依赖包导入到项目中,pom如下:
  1.    <properties>
  2.        <spring.version>4.2.8.RELEASE</spring.version>
  3.        <log4j.version>2.8.2</log4j.version>
  4.        <slf4j.version>1.7.25</slf4j.version>
  5.    </properties>
  6.   
  7.    <dependencies>
  8.        <dependency>
  9.             <groupId>com.cnsugar.ai</groupId>
  10.             <artifactId>seetafaceJNI</artifactId>
  11.             <version>2.0</version>
  12.             <!--<scope>system</scope>-->
  13.             <!--<systemPath>${project.basedir}/lib/seetafaceJNI-2.0.jar</systemPath>-->
  14.        </dependency>
  15.        <dependency>
  16.            <groupId>org.springframework</groupId>
  17.            <artifactId>spring-core</artifactId>
  18.            <version>${spring.version}</version>
  19.        </dependency>
  20.   
  21.        <dependency>
  22.            <groupId>org.slf4j</groupId>
  23.            <artifactId>slf4j-api</artifactId>
  24.            <version>${slf4j.version}</version>
  25.        </dependency>
  26.   
  27.        <!-- sqlite -->
  28.        <dependency>
  29.            <groupId>org.xerial</groupId>
  30.            <artifactId>sqlite-jdbc</artifactId>
  31.            <version>3.25.2</version>
  32.        </dependency>
  33.        <dependency>
  34.            <groupId>org.apache.commons</groupId>
  35.            <artifactId>commons-pool2</artifactId>
  36.            <version>2.4.2</version>
  37.        </dependency>
  38.    </dependencies>
复制代码
6、调用FaceHelper中的方法。
使用方法
所有方法都封装到了FaceHelper工具类中
  1.     /**
  2.      * 人脸比对
  3.      *
  4.      * @param img1
  5.      * @param img2
  6.      * @return 相似度
  7.      */
  8.     float compare(File img1, File img2);
  9.     float compare(byte[] img1, byte[] img2);
  10.     float compare(BufferedImage image1, BufferedImage image2);
  11.    
  12.     /**
  13.      * 注册人脸(会裁剪图片)
  14.      *
  15.      * @param key 人脸照片唯一标识
  16.      * @param img 人脸照片
  17.      * @return
  18.      */
  19.     boolean register(String key, byte[] img);
  20.     /**
  21.      * 注册人脸(不裁剪图片)
  22.      *
  23.      * @param key 人脸照片唯一标识
  24.      * @param image 人脸照片
  25.      * @return
  26.      */
  27.     boolean register(String key, BufferedImage image)
  28.    
  29.     /**
  30.      * 搜索人脸
  31.      *
  32.      * @param img 人脸照片
  33.      * @return
  34.      */
  35.     Result search(byte[] img);
  36.     Result search(BufferedImage image);
  37.    
  38.     /**
  39.      * 人脸提取(裁剪)
  40.      *
  41.      * @param img
  42.      * @return return cropped face
  43.      */
  44.     BufferedImage crop(byte[] img);
  45.     BufferedImage crop(BufferedImage image);
  46.    
  47.     /**
  48.      * 人脸识别
  49.      *
  50.      * @param img
  51.      * @return
  52.      */
  53.     SeetaRect[] detect(byte[] img);
  54.     SeetaRect[] detect(BufferedImage image);

  55.     /**
  56.      * 人脸识别(包含5个特征点位置)
  57.      *
  58.      * @param image
  59.      * @return
  60.      */
  61.     FaceLandmark detectLandmark(BufferedImage image);
  62.    
  63.     /**
  64.      * 删除已注册的人脸
  65.      * @param keys
  66.      */
  67.     void removeRegister(String... keys);  
  68.    
  69.     /**
  70.      * 清除人脸库数据
  71.      */
  72.     void clear();   
  73.    
复制代码
  • 示例代码:1:1人脸比对
  1.     @org.junit.Test
  2.     public void testCompare() throws Exception {
  3.         String img1 = "F:\\ai\\demo-pic39.jpg";
  4.         String img2 = "F:\\ai\\left_pic_one.jpg";
  5.         System.out.println("result:"+FaceHelper.compare(new File(img1), new File(img2)));
  6.     }
复制代码
  • 示例代码:1:N人脸搜索
    先调用FaceHelper.register()方法将人脸图片注册到seetaface2的人脸库(内存)中,同时会将图片存在sqlite数据库中进行持久化,下次应用程序启动时会自动从sqlite中把图片读取出来重新注册到seetafce2的内存库中
  1.     @org.junit.Test
  2.     public void testRegister() throws IOException {
  3.         //将F:\ai\star目录下的jpg、png图片都注册到人脸库中,以文件名为key
  4.         Collection<File> files = FileUtils.listFiles(new File("F:\\ai\\star"), new String[]{"jpg", "png"}, false);
  5.         for (File file : files) {
  6.             String key = file.getName();
  7.             try {
  8.                 FaceHelper.register(key, FileUtils.readFileToByteArray(file));
  9.             } catch (Exception e) {
  10.                 e.printStackTrace();
  11.             }
  12.         }
  13.     }

  14.     @org.junit.Test
  15.     public void testSearch() throws IOException {
  16.         SeetafaceBuilder.build();//系统启动时先调用初始化方法

  17.         //等待初始化完成
  18.         while (SeetafaceBuilder.getFaceDbStatus() == SeetafaceBuilder.FacedbStatus.LOADING || SeetafaceBuilder.getFaceDbStatus() == SeetafaceBuilder.FacedbStatus.READY) {
  19.             try {
  20.                 Thread.sleep(100);
  21.             } catch (InterruptedException e) {
  22.                 e.printStackTrace();
  23.             }
  24.         }
  25.         
  26.         long l = System.currentTimeMillis();
  27.         Result result = FaceHelper.search(FileUtils.readFileToByteArray(new File("F:\\ai\\gtl.jpg")));
  28.         System.out.println("搜索结果:" + result + ", 耗时:" + (System.currentTimeMillis() - l));
  29.     }
复制代码


游客,本帖隐藏的内容需要积分高于 2 才可浏览,您当前积分为 0



提取码下载:
文件名称:提取码下载.txt 
下载次数:2  文件大小:13 Bytes  售价:59金钱 [记录]
下载权限: 不限 [购买VIP]   [充值]   [在线充值]   【VIP会员5折;永久VIP免费】
安全检测,请放心下载





相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|小黑屋|依星资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2024-11-24 02:41

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表