不能当摄影师的程序员不是好男票!10分钟get专属她的“美颜相机”!
总是被女朋友吐槽拍照技术不佳?是不是脑海中,已经浮现出手牵手跟女友去迪士尼游玩时,女友开心的让你给他拍照,殊不知不给力的你,拍出的照片不仅脸大腿短不对焦,还一米五既视感,瞬间惹恼女友。
这点小场面怎么会难倒我们的程序员?身为一名程序员,产品经理的需求都可以满足,女友的需求还不分分钟搞定?快速打造一款专属她的“美颜相机”,轻松实现瘦脸、大眼等功能,让你的女朋友随心操作,瞬间实现美颜效果!
“美颜相机”到底是如何开发的?原理又是什么?
轻轻一点就能自动检测到照片中的人脸,然后放大眼睛加瘦脸,实现美颜的效果。这到底是如何实现的呢?
原理很简单,利用华为机器学习服务中的人脸检测功能,对人脸多达855个关键点进行检测,返回人脸轮廓、眉毛、眼睛、鼻子、嘴巴、耳朵等部位的坐标以及人脸偏转角度等信息,这样我们就可以根据这些信息快速构建一款“美颜相机”,对人脸进行美化,甚至可以在脸上添加一些有趣的元素,比如可爱的贴纸等,增加图片的趣味性。
10分钟get“美颜相机”开发教程!
1. 开发准备
详细的准备步骤可以参考华为开发者联盟,这里列举关键的开发步骤。
1.1 项目级gradle里配置Maven仓地址
buildscript { repositories { ... maven {url 'https://developer.huawei.com/repo/'} } } dependencies { ... classpath 'com.huawei.agconnect:agcp:1.3.1.300' } allprojects { repositories { ... maven {url 'https://developer.huawei.com/repo/'} } }
1.2 文件头增加配置
集成SDK后,在文件头添加配置
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
1.3 应用级gradle里配置SDK依赖
dependencies{ // 引入基础SDK implementation 'com.huawei.hms:ml-computer-vision-face:2.0.1.300' // 引入人脸轮廓+关键点检测模型包 implementation 'com.huawei.hms:ml-computer-vision-face-shape-point-model:2.0.1.300' // 引入表情检测模型包 implementation 'com.huawei.hms:ml-computer-vision-face-emotion-model:2.0.1.300' // 引入特征检测模型包 implementation 'com.huawei.hms:ml-computer-vision-face-feature-model:2.0.1.300' }
1.4 将以下语句添加到AndroidManifest.xml文件中,用于自动更新机器学习模型
<manifest ... <meta-data android:name="com.huawei.hms.ml.DEPENDENCY" android:value= "face"/> ... </manifest>
1.5 申请摄像头权限
<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" />
2. 代码开发
2.1 使用默认参数配置,创建人脸分析器
analyzer = MLAnalyzerFactory.getInstance().getFaceAnalyzer();
2.2 通过android.graphics.Bitmap创建MLFrame对象用于分析器检测图片
MLFrame frame = MLFrame.fromBitmap(bitmap);
2.3 调用“asyncAnalyseFrame”方法进行人脸检测
Task<List<MLFace>> task = analyzer.asyncAnalyseFrame(frame); task.addOnSuccessListener(new OnSuccessListener<List<MLFace>>() { @Override public void onSuccess(List<MLFace> faces) { // 检测成功,获取脸部关键点信息。 } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { // 检测失败。 } });
2.4 通过进度条进行不同程度的大眼瘦脸处理。分别调用magnifyEye方法和smallFaceMesh方法实现大眼算法和瘦脸算法
private SeekBar.OnSeekBarChangeListener onSeekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { switch (seekBar.getId()) { case R.id.seekbareye: // 当大眼进度条变化时,… case R.id.seekbarface: // 当瘦脸进度条变化时,… } } }
2.5 检测完成,释放分析器
try { if (analyzer != null) { analyzer.stop(); } } catch (IOException e) { Log.e(TAG, "e=" + e.getMessage()); }
先来看看简单款“美颜相机”的Demo吧!
怎么样,你学会了吗?快速搞定一款女朋友限定版“美颜相机”,不仅可以实现大眼瘦脸功能,你也可以添加可爱小贴纸功能,微笑抓拍功能等等, 这些都可以通过接入机器学习服务快速实现!
如果你也想在女朋友面前成功秀一把,请下载GitHub源码。如果通过教程的学习,你成功开发出一款“美颜相机”,说不定“最佳程序员男友”就是你!
>>访问华为开发者联盟官网,了解更多相关内容
>>获取开发指导文档
>>华为移动服务开源仓库地址:GitHub、Gitee
点击右上角头像右方的关注,第一时间了解华为移动服务最新技术~
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
我的 GitHub 起飞了!
中国大陆的用户访问 GitHub 的速度很慢,如果不「科学上网」,下载一个项目可能需要等很多时间。 今天这篇文章就帮你彻底解决「GitHub速度慢」的问题,让你的 GitHub 起飞! 速度慢的原因有很多,但最直接和最主要的原因是 GitHub 的分发加速网络的域名遭到 DNS 污染。 由于 GitHub 的加速分发 CDN 域名 assets-cdn.github.com 遭到 DNS 污染,导致无法连接使用 GitHub的加速分发服务器,才使得中国大陆访问速度很慢。 我们解决污染问题一般是通过通过修改 Hosts ,GitHub 的 CDN 域名被污染问题也不例外。将域名解析直接指向 IP 地址来绕过 DNS 的解析,以此解决污染问题。 01 解决污染 1. 打开 www.ipaddress.com 查询下面四个网站的 IP 。 https://github.com/ https://assets-cdn.github.com/ http://global.ssl.fastly.net/ codeload.github.com 把这四个网站的地址复制到刚刚的完整进行查询,假如查询结...
- 下一篇
在 Kubernetes 上弹性深度学习训练利器 -- Elastic Training Operator
作者 |徐晓舟(萧元) 来源|阿里巴巴云原生公众号 背景 由于云计算在资源成本和弹性扩容方面的天然优势,越来越多客户愿意在云上构建 AI 系统,而以容器、Kubernetes 为代表的云原生技术,已经成为释放云价值的最短路径, 在云上基于 Kubernetes 构建 AI 平台已经成为趋势。 当面临较复杂的模型训练或者数据量大时,单机的计算能力往往无法满足算力要求。通过使用阿里的 AiACC 或者社区的 horovod等分布式训练框架,仅需修改几行代码,就能将一个单机的训练任务扩展为支持分布式的训练任务。在 Kubernetes 上常见的是 kubeflow 社区的 tf-operator 支持 Tensorflow PS 模式,或者 mpi-operator 支持 horovod 的 mpi allreduce 模式。 现状 Kubernetes 和云计算提供敏捷性和伸缩性,我们可以通过 cluster-AutoScaler 等组件为训练任务设置弹性策略,利用 Kubernetes 的弹性能力,按需创建,减少 GPU 设备空转。 但这种伸缩模式面对训练这种离线任务还是略有不足: 不支...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8安装Docker,最新的服务器搭配容器使用