Android中如何在安卓上开发一个微笑抓拍神器
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要介绍"Android中如何在安卓上开发一个微笑抓拍神器",在日常操作中,相信很多人在Android中如何在安卓上开发一个微笑抓拍神器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2025年01月17日Android中如何在安卓上开发一个微笑抓拍神器
这篇文章主要介绍"Android中如何在安卓上开发一个微笑抓拍神器",在日常操作中,相信很多人在Android中如何在安卓上开发一个微笑抓拍神器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Android中如何在安卓上开发一个微笑抓拍神器"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1、开发准备
华为HMS的kit开发前准备工作都差不多,无非就是添加maven依赖,引入SDK。
1.1 在项目级gradle里添加华为maven仓
增量添加如下maven地址:
buildscript { repositories { maven {url 'http://developer.huawei.com/repo/'} } }allprojects { repositories { maven { url 'http://developer.huawei.com/repo/'} }}
1.2 在应用级的build.gradle里面加上SDK依赖
把人脸识别的SDK和基础SDK引入:
dependencies{ // 引入基础SDK implementation 'com.huawei.hms:ml-computer-vision:1.0.2.300' // 引入人脸检测能力包 implementation 'com.huawei.hms:ml-computer-vision-face-recognition-model:1.0.2.300' }
1.3 在AndroidManifest.xml文件里面增量添加模型自动下载
这个主要是用来模型更新的,后面算法有了优化,可以自动下载到手机里面更新
1.4 在AndroidManifest.xml文件里面申请相机和存储权限
2、代码开发
2.1 创建人脸分析器,检测到微笑后进行拍照
检测后拍照:
进行分析器参数配置
把分析器参数配置传给分析器
在analyzer.setTransacto内通过重写transactResult处理人脸识别后的内容,人脸识别后会返回一个微笑的置信度(简单可以理解为是微笑的概率),只要设置大于一定置信度进行拍照就可以了。
private MLFaceAnalyzer analyzer;private void createFaceAnalyzer() { MLFaceAnalyzerSetting setting = new MLFaceAnalyzerSetting.Factory() .setFeatureType(MLFaceAnalyzerSetting.TYPE_FEATURES) .setKeyPointType(MLFaceAnalyzerSetting.TYPE_UNSUPPORT_KEYPOINTS) .setMinFaceProportion(0.1f) .setTracingAllowed(true) .create(); this.analyzer = MLAnalyzerFactory.getInstance().getFaceAnalyzer(setting); this.analyzer.setTransactor(new MLAnalyzer.MLTransactor() { @Override public void destroy() { } @Override public void transactResult(MLAnalyzer.Result result) { SparseArray faceSparseArray = result.getAnalyseList(); int flag = 0; for (int i = 0; i < faceSparseArray.size(); i++) { MLFaceEmotion emotion = faceSparseArray.valueAt(i).getEmotions(); if (emotion.getSmilingProbability() > smilingPossibility) { flag++; } } if (flag > faceSparseArray.size() * smilingRate && safeToTakePicture) { safeToTakePicture = false; mHandler.sendEmptyMessage(TAKE_PHOTO); } } });}
拍照存储部分:
private void takePhoto() { this.mLensEngine.photograph(null, new LensEngine.PhotographListener() { @Override public void takenPhotograph(byte[] bytes) { mHandler.sendEmptyMessage(STOP_PREVIEW); Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); saveBitmapToDisk(bitmap); } });}
2.2 创建视觉引擎,捕捉相机动态视频流后传给分析器
private void createLensEngine() { Context context = this.getApplicationContext(); // Create LensEngine this.mLensEngine = new LensEngine.Creator(context, this.analyzer).setLensType(this.lensType) .applyDisplayDimension(640, 480) .applyFps(25.0f) .enableAutomaticFocus(true) .create();}
2.3 动态权限申请,挂接分析器和视觉引擎创建代码
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_live_face_analyse); if (savedInstanceState != null) { this.lensType = savedInstanceState.getInt("lensType"); } this.mPreview = this.findViewById(R.id.preview); this.createFaceAnalyzer(); this.findViewById(R.id.facingSwitch).setOnClickListener(this); // Checking Camera Permissions if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { this.createLensEngine(); } else { this.requestCameraPermission(); }} private void requestCameraPermission() { final String[] permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}; if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { ActivityCompat.requestPermissions(this, permissions, LiveFaceAnalyseActivity.CAMERA_PERMISSION_CODE); return; }}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode != LiveFaceAnalyseActivity.CAMERA_PERMISSION_CODE) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); return; } if (grantResults.length != 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { this.createLensEngine(); return; }}
到此,关于"Android中如何在安卓上开发一个微笑抓拍神器"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
开发
微笑
分析器
分析
人脸
神器
安卓
学习
检测
代码
动态
参数
基础
增量
引擎
文件
更多
权限
模型
相机
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全知识课程评估
学生租用服务器的费用一年多少
超聚变服务器从光驱启动
创意网络技术靠谱吗
创建网站连接数据库失败
怀柔区信息化网络技术服务系统
摩拜使用的网络技术
我的世界服务器送礼的视频
乌云网络安全峰会
深圳网络安全服务怎么样
光大证券周边服务器没开
大唐无双服务器开多久有活跃度
服务器连接主机显示器无信号
软件开发 ee
慈溪微播报网络安全知识
橡果网络技术发展
永川区网络软件开发流程报价表
网络安全的待遇
双猫app软件开发
软件开发模式的简称
四川数据库通用多路锁控板装备
信息中心网络安全总结
济南艾特软件开发公司怎么样
二五六互联网科技怎么样
数据库设计 多对多
云服务器提供商排名
数据库汉字显示问号
书同文数据库
英特尔服务器主板设置u盘启动
ftp 服务器工具