如何在Android中实现一个裁剪人脸类
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍"如何在Android中实现一个裁剪人脸类"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何在Android中实现一个裁剪人脸类"文章能帮助大
千家信息网最后更新 2025年01月21日如何在Android中实现一个裁剪人脸类
这篇文章主要介绍"如何在Android中实现一个裁剪人脸类"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何在Android中实现一个裁剪人脸类"文章能帮助大家解决问题。
人脸裁剪类
public final class FaceCj { 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 ListfacePaths; private static String facePath; public static Bitmap cutFace(Bitmap bitmap, Context context) { facePaths = null; BitmapFactoryOptionsbfo = new BitmapFactory.Options(); BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565; // 构造位图生成的参数,必须为565。类名+enum out = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 50, out); data = out.toByteArray(); bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, BitmapFactoryOptionsbfo); try { out.flush(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.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 (); 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 { return Bitmap.createBitmap(bitmap, tx, ty, bx - tx, by - ty);//这里可以自行调整裁剪宽高 } catch (Exception e) { e.printStackTrace(); } } bitmap.recycle(); return bitmap; }}
关于"如何在Android中实现一个裁剪人脸类"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
人脸
中实
知识
参数
行业
不同
实用
中心点
位图
内容
右边
实例
实用性
实际
数组
文章
方法
更多
案例
画框
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电脑怎么设置爱奇艺代理服务器
电视无法连接服务器有什么影响吗
大学网络安全现状
提供网络安全检测
邮箱服务器是什么
电脑显示不安全连接到服务器
要加强网络安全管理力度
新收入准则解读软件开发
软件开发应届生面试题
广东省校园网络安全示范校
网络安全专题教育 安全法
网络技术专业学历
崇明区网络安全审计系统咨询
陕西超音速网络技术公司
肉鸡服务器购买
手机网络安全教育教案
数据库字符串型数据李白
邮矿数字化基础数据库
审计网络安全应急演练
数据库的调度是什么意思
社交app数据库哪个好
罗定租房软件开发
分布式图数据库技术观后感
服务器的网页没有权限访问
数据库二级映像怎么设置
紫光股份IDC服务器
网络安全课程的重要性
网络技术的原理是什么
本地服务器怎么防护
七日杀怎么找自己的服务器