最近用到人脸识别技术,有个需求是多人脸图片的时候需要一个一个把人脸裁剪出来,以便获取人脸的图片,从而用其获取单人脸的特征:效果如如:(有链接demo)

https://download.csdn.net/download/qq_38355313/10438863

裁剪前

裁剪后

上班时间关系,不多做解释,直接贴代码

private static BitmapFactory.Options BitmapFactoryOptionsbfo;private static ByteArrayOutputStream out;private static byte[] data;private static FaceDetector.Face[] myFace;private static FaceDetector myFaceDetect;private static int tx = 0;private static int ty = 0;private static int bx = 0;private static int by = 0;private static int width = 0;private static int height = 0;private static float wuchax = 0;private static float wuchay = 0;private static FaceDetector.Face face;private static PointF myMidPoint;private static float myEyesDistance;private static List<String> facePaths;private static String facePath;public static List<String> cutFace(Bitmap bitmap, Context context) {facePaths = null;BitmapFactoryOptionsbfo = new BitmapFactory.Options();BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565; // 构造位图生成的参数,必须为565。类名+enumout = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);data = out.toByteArray();bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,BitmapFactoryOptionsbfo);try {out.flush();out.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}width = bitmap.getWidth();height = bitmap.getHeight();myFace = new FaceDetector.Face[5]; // 分配人脸数组空间myFaceDetect = new FaceDetector(bitmap.getWidth(), bitmap.getHeight(), 5);int numberOfFaceDetected = myFaceDetect.findFaces(bitmap, myFace);if (numberOfFaceDetected <= 0) {// FaceDetector构造实例并解析人脸bitmap.recycle();return null;}facePaths = new ArrayList<String>();for (int i = 0; i < numberOfFaceDetected; i++) {face = myFace[i];myMidPoint = new PointF();face.getMidPoint(myMidPoint);myEyesDistance = face.eyesDistance();   //得到人脸中心点和眼间距离参数,并对每个人脸进行画框wuchax = myEyesDistance / 2 + myEyesDistance;wuchay = myEyesDistance * 2 / 3 + myEyesDistance;if (myMidPoint.x - wuchax < 0) {//判断左边是否出界tx = 0;} else {tx = (int) (myMidPoint.x - wuchax);}if (myMidPoint.x + wuchax > width) {//判断右边是否出界bx = width;} else {bx = (int) (myMidPoint.x + wuchax);}if (myMidPoint.y - wuchay < 0) {//判断上边是否出界ty = 0;} else {ty = (int) (myMidPoint.y - wuchay);}if (myMidPoint.y + wuchay > height) {//判断下边是否出界by = height;} else {by = (int) (myMidPoint.y + wuchay);}try {facePath = saveBitmapN(Bitmap.createBitmap(bitmap, tx, ty, bx - tx, by - ty));} catch (Exception e) {e.printStackTrace();facePath = null;}if (facePath != null) {facePaths.add(facePath);}}bitmap.recycle();return facePaths;}

下载链接

https://download.csdn.net/download/qq_38355313/10438863

人脸裁剪 人脸识别图片裁剪 多人脸裁剪相关推荐

  1. html5裁剪后的图片不显示怎么办,裁剪后的图片不显示??

    按照老师在React Native Android原生模块开发实战中裁剪图片的例子来写的: render() { let imgUrl =Platform.OS==='android'? 'file: ...

  2. 测一测!中科视拓免费开放口罩人脸检测与识别技术

    全民抗疫形势下,口罩已成为复工复产的标配.对于人脸识别技术厂商而言,两个应用需求应运而生: 1.检测人脸是否佩戴口罩: 2.在戴口罩的情况下依旧能够实现高精度人脸识别. 疫情初期,中科视拓紧急研发口罩 ...

  3. 一文搞懂人脸识别那点事---人脸识别方案summary

    The Summary Of Face Recognition [全文共计7162字,预计阅读15分钟,消耗脑容量20MB] 人脸识别包含人脸检测.人脸对齐.人脸识别三个步骤. 首先利用人脸检测(Fa ...

  4. mtcnn人脸检测python_基于mtcnn和facenet的实时人脸检测与识别系统开发

    简介:本文主要介绍了实时人脸检测与识别系统的详细方法.该系统基于python/opencv2/tensorflow环境,实现了从摄像头读取视频,检测人脸,识别人脸的功能.本系统代码地址:real ti ...

  5. 人脸验证与识别——从模型训练到项目部署

    前言 1.人脸验证其实是人脸识别中的一种,人脸验证要做的是1对1的验证,算法的验证模式是对当前人脸与另一张人脸做比对,然后给出得分值,可以按得分值来证明可以当前的人脸是否与另一给脸匹配上.这种使用最多 ...

  6. PCA人脸识别GUI(ORL+Yale人脸库)

    该系统为基于MATLAB平台的PCA的人脸识别系统,可识别ORL和YALE人脸库,方法实现统一,包括GUI界面.另外可二次开发成摄像头的实时人脸系统,识别出库外人脸,可做成门禁系统,考勤系统,打卡签到 ...

  7. Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别

    搭建环境 opencv官网下载windows安装包 https://opencv.org/releases/ 选择最新版4.1.1 下载完成后是一个opencv-4.1.1-vc14_vc15.exe ...

  8. 使用OpenCV-python识别图片视频中的人脸和眼睛

    文章目录 思路和核心代码 识别图像中的人脸 识别视频中的人脸和眼睛 思路和核心代码 思路如下: 首先需要一个训练好的人脸和眼睛特征数据库,用于识别人脸和眼睛 识别出人脸和眼睛之后,返回所在的区域(一般 ...

  9. Python人脸识别图片视频

    人脸识别技术发展现状及未来趋势 当前,随着人工智能.物联网等前沿技术的迅速发展,智能时代已悄然到来,"刷脸"逐渐成为了新的风潮.在人脸识别技术商业化应用领域不断扩张的趋势下,&qu ...

  10. 基于BP神经网络算法的实现静态图片和视频人脸识别、性别识别

    资源下载地址:https://download.csdn.net/download/sheziqiong/85772066 资源下载地址:https://download.csdn.net/downl ...

最新文章

  1. Spring 系列,第 2 部分: 当 Hibernate 遇上 Spring
  2. 删除vsftp虚拟用户脚本
  3. 【java基础】map的基本使用与字符串中每个字符出现的次数统计
  4. 平台信赖度成为双十一影响消费者购买决策的重要因素
  5. 2021.02.18 Visual QA论文阅读
  6. 知乎用户行为预测数据比赛,10万奖金等你来Battle!
  7. ListView的分页显示
  8. Java基础学习总结(42)——Log4j 2使用教程
  9. python使用ffmpeg截取视频段
  10. @ConfigurationProperties + @EnableConfigurationProperties
  11. 一次性获取多个oracle序列的值,实现关联表多数据的批量insert
  12. java synchronized块_Java多线程同步代码块Synchronized
  13. [转]Qt 之 QFileSystemWatcher
  14. 正则化与数据先验分布的关系
  15. 织梦域名后缀.html,织梦cms建站教程之首页域名后缀index.html去除的方法
  16. 一IT项目经理的总结
  17. 神经网络Neural Networks概述
  18. 美国依靠美元霸权, 是如何收割世界财富的?
  19. 什么是大数据开发?看完我终于懂了......
  20. “大多数人,都死在了 30 岁”

热门文章

  1. 如何重新开启小米平板的USB计算机连接功能
  2. php查看opcache是否开启,开启opcache
  3. Android pid uid 机制分析Permission Denial的错误
  4. 【10.22 牛客普及(三)】 牛半仙的妹子串 题解
  5. 西南交通大学计算机相关专业考研科目及概述
  6. 登录界面之Axure原型制作
  7. 【截稿提醒】1/2区高分SCI,审稿友好,接收领域广,物联网、无线网络领域重点关注
  8. Java基础算术运算符
  9. 数据要素市场的基础制度供给:要素市场
  10. [附源码]java毕业设计儿童资源教育网站