zoukankan      html  css  js  c++  java
  • 某Android程序员为了让女朋友高兴,给女朋友写了一个专属她的“美颜相机”!!

    随着科技的进步,现在我们看到的妹子也越来越漂亮了。无他,美颜。
    今天,某程序员为了让女朋友高兴,给女朋友写了一个专属她的“美颜相机”!看看是如何实现的吧。
    原文地址:不能当摄影师的程序员不是好男票!10分钟get专属她的“美颜相机”
    推荐阅读:程序员人均年薪百万?Android程序员该如何做到高薪?

    前言

    总是被女朋友吐槽拍照技术不佳?是不是脑海中,已经浮现出手牵手跟女友去迪士尼游玩时,女友开心的让你给他拍照,殊不知不给力的你,拍出的照片不仅脸大腿短不对焦,还一米五既视感,瞬间惹恼女友。

    这点小场面怎么会难倒我们的程序员?身为一名程序员,产品经理的需求都可以满足,女友的需求还不分分钟搞定?快速打造一款专属她的“美颜相机”,轻松实现瘦脸、大眼等功能,让你的女朋友随心操作,瞬间实现美颜效果。

    “美颜相机”到底是如何开发的?原理又是什么?

    轻轻一点就能自动检测到照片中的人脸,然后放大眼睛加瘦脸,实现美颜的效果。这到底是如何实现的呢?

    原理很简单,利用华为机器学习服务中的人脸检测功能,对人脸多达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源码

    最后

    程序员找老婆是真的很难,如果有人愿意陪着你,一定要好好珍惜,大家平时也可以用自己的技术做一些让伴侣开心的事情。当然,首先,你得有技术。

    Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。

    千里之行始于足下,愿你我共勉。

    我把自己这段时间整理的Android最重要最热门的学习方向资料放在了我的GitHub,里面还有不同方向的自学编程路线、面试题集合/面经、及系列技术文章等。(点击此处可以查看)

    资源持续更新中,欢迎大家一起学习和探讨。

  • 相关阅读:
    python之路-day31-守护进程、锁、队列、生产者消费者模型
    python之路-day30-进程
    python之路-day26 初探网络编程
    python之路-day25-包
    python之路-day21-模块介绍1
    python之路-day19-面向对象之约束
    递归格式模板
    java创建一个窗体
    异常throws关键字 异常throw关键字
    多个catch块
  • 原文地址:https://www.cnblogs.com/chengsisi/p/14423596.html
Copyright © 2011-2022 走看看