

不能当摄影师的程序员不是好男票!10分钟get专属她的“美颜相机”!
source link: https://my.oschina.net/u/4956408/blog/4955685
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

总是被女朋友吐槽拍照技术不佳?是不是脑海中,已经浮现出手牵手跟女友去迪士尼游玩时,女友开心的让你给他拍照,殊不知不给力的你,拍出的照片不仅脸大腿短不对焦,还一米五既视感,瞬间惹恼女友。
这点小场面怎么会难倒我们的程序员?身为一名程序员,产品经理的需求都可以满足,女友的需求还不分分钟搞定?快速打造一款专属她的“美颜相机”,轻松实现瘦脸、大眼等功能,让你的女朋友随心操作,瞬间实现美颜效果!
“美颜相机”到底是如何开发的?原理又是什么?
轻轻一点就能自动检测到照片中的人脸,然后放大眼睛加瘦脸,实现美颜的效果。这到底是如何实现的呢?
原理很简单,利用华为机器学习服务中的人脸检测功能,对人脸多达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
点击右上角头像右方的关注,第一时间了解华为移动服务最新技术~
Recommend
-
57
摄影圈子里的「器材党」通常泛指热衷于讨论器材的爱好者群体。无独有偶,技术社区里也有一类以掌握某个开发框架为骄傲的程序员。你还别说,这两个群体还真的挺像的……
-
43
今天,是“520” 也是传说中的“表白日”。 Love makes the world go round ! 忙于Coding(sheng fa)的程序员们
-
9
江卓尔:MakerDAO的价值不能传递到MKR上,是因为MakerDAO不是底层系统 • 2 小时前 ...
-
8
近日,波士顿动力的网红大黄狗Spot因为学会“做家务”而登上了微博热搜。继跨年夜的芭蕾小碎步之后,再次引起全网热议。 这次的“进化”要归功于波士...
-
5
iPhone 截屏 火爆全球的自拍神器 和8亿自拍星人一起在BeautyCam美颜相机 遇见更美的自己 ———BeautyCam美颜相机重磅升级——— 【原生模式】...
-
3
这位程序员火了:用脚本完全自动化摸鱼 每天工作10分钟年薪57万 2022年01月25日 17:38 次阅读 稿源:量子位
-
5
清华博士后用10分钟讲解AlphaCode背后的技术原理,原来程序员不是那么容易被取代的!-51CTO.COM 清华博士后用10分钟讲解AlphaCode背后的技术原理,原来程序员不是那么容易被取代的! 作者:我在思考中 2022-02...
-
5
肚脐眼后面连的根本不是肠子!为什么不能乱抠?终于搞明白了 2022-02-16 | 星辰大海路上的种花家 原创
-
5
【精】【客串的相机画像】不是摄影师的客串作品,学海始终无涯! 论坛红人馆首页推荐 【客串的相机画像】不是摄影师的客串作品,学海始终无涯! ...
-
6
家的风格 | 摄影师的家不能没有艺术,于是常被喜欢的一切环绕 - 少数派 家的风格 | 摄影师的家不能没有艺术,于是常被喜欢的一切环绕 12 小时前 编者注:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK