讯飞AIUI智能机器人6-----人脸识别技术

这篇具有很好参考价值的文章主要介绍了讯飞AIUI智能机器人6-----人脸识别技术。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习
🍖🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖
🍖🍖
🍖🍖🍖
🍖🍖🍖🍖 作者 : 不良使
🍖🍖🍖🍖🍖 潜力创作新星 华为云享专家
🍖🍖🍖🍖🍖🍖 博客记录学习的思路,项目和错误,寻找志同道合的朋友
🍖🍖🍖🍖🍖🍖🍖 如果觉得有帮助记得一键三连 ┗|`O′|┛ 嗷~~
🍖🍖🍖🍖🍖🍖🍖🍖

🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖



开始之前来个小插曲。 可以伴随一生的编程软件(完全免费)。里面除了全国top的刷题题库,还有招聘(社招和校招)、一些上岸大厂的大佬的面试经验,从学校到社会工作,时时刻刻你都可以用到,感兴趣的可以去注册试试可以伴随程序员一生的app



🍓🍓一、实验目的

想要给你的项目加上人脸识别的亮点吗,那就来看看这篇文章吧。本次实验通过使用讯飞开放平台上MSC人脸识别能力,介绍了人脸验证与人脸检索的使用,结合服务机器人的相机能力,开发一个简单的人脸识别应用程序,了解人脸识别技术如何在机器人上使用,同时对人脸识别技术的使用途径和步骤进行详细讲解,具体包括下面三个部分:
💖1、了解讯飞开放平台MSC的人脸识别技术;
💖2、 掌握机器人开发套件相机的使用;
💖3、 掌握人脸识别功能在机器人上的应用开发。


🍓🍓二、实验内容

人脸识别作为一项热门的计算机技术研究领域,是利用分析比较的计算机技术识别人脸,其中包括人脸追踪侦测,自动调整影像放大,夜间红外侦测,自动调整曝光强度等技术。人脸识别技术属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。本次实验就是通过一个智能人脸识别应用的开发,来向大家展示人脸识别技术在智能AI应用中的具体实现方法和呈现的效果体验。本次实验通过开发一个实际的简单智能人脸识别应用,通过机器人完成人脸的注册与识别,并对具体的技术与流程做详细的讲解。


🍓🍓三、实验步骤

💖💖步骤 1:开放平台账号申请及能力注册

由于本次实验开发的人脸识别功能应用使用的是科大讯飞开放平台提供的 人脸识别能力,我们需要先到讯飞的开放平台申请账号,并完成平台上相关能力 注册,具体流程如下: 1)首先,我们要在讯飞开放平台进行账号注册,地址:https://www.xfyun.cn/
科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习

完成注册后,登陆开放平台,进入控制台。点击“创建应用”,完成应用相关信息的输入后,点击“提交”按钮
科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习

此时,进入“我的应用”界面,可以看到添加的应用信息,包括 appid 等,点 击“其他”,在弹出的界面中选择“人脸验证与检索”的管理服务,可以选择对 应的服务完成 SDK 的下载
科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习

在其他中找到人脸识别,下载对应的SDK。


💖💖步骤 2:项目工程搭建及能力包导入

科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习
科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习

💖💖步骤3:项目MSC能力导入

完成了工程项目的搭建后,我们需要在项目工程中集成开放平台的MSC能力,具体步骤如下:
首先,将MSC能力包文件mscability-release.aar文件拷贝到项目工程的/app/libs目录下;
然后,解压从讯飞开放平台下载的人脸识别SDK能力包,在libs目录下找到Msc.jar文件,拷贝到项目工程目录/app/libs目录下;接着,将SDK能力包libs目录下的所有armeabi目录拷贝到工程目录/app/src/main/jniLibs下(若没有这个目录,自己创建)。整体目录结构如下:

科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习

完成SDK的集成后,我们需要再编译配置文件中进行能力包的导入配置,打开app目录下的build.gradle文件,添加下图中红框位置中代码
科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习
科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习

完整的build.gradle文件如下所示:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.starway.starrobot"
        minSdkVersion 18
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        ndk {
            //只需要兼容armeabi-v7a
            abiFilters "armeabi-v7a"
        }
    }

    signingConfigs {
        debug {
            storeFile file("platform.jks")
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
        release {
            storeFile file("platform.jks")
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

💖💖步骤4:功能代码开发

💥💥首先,在我们的应用工程新建我们自定义的Application(MyApp.java),在MyApp.java文件的onCreate中进行开放平台MSC能力的注册,只有完成了能力的注册后,才能使用人脸识别的能力接口。

private void init() {
    StarMscAbility.getInstance().initWithAppid(getApplicationContext(), APPID);
    //日志初始化
    StarLogAbility.getInstance().initAbility(this);
    //基础能力初始化
    StarCommonAbility.getInstance().initAbility(this,
            RobotType.TYPE_TEACHING, new StarCommonAbility.onResultCallback() {
                @Override
                public void onResult(boolean isSuccess, String hardCode) {
                    if (isSuccess) {
                        //硬件和业务状态初始化
                        switch (hardCode) {
                            case PartCode.HARDWARE_PARTCODE.CODE_EMOJI:
                                //设置初始表情
                                EmojiHelper.doEmojiBase();
                                break;
                            case PartCode.HARDWARE_PARTCODE.CODE_GPIO:
                                //默认加载的时候,将拾音方向设置为默认正前方的0度。
                                GPIOHelper.getInstance().setMainMic(0);
                                break;
                            case PartCode.HARDWARE_PARTCODE.CODE_CENTER_LIGHT:
                                //关闭腹部灯带
                                CenterLightHelper.takeCenterLightOff();
                                break;
                            default:
                                break;
                        }
                    }
                }
            });
}

💥💥界面控件初始化(部分)

private void initView() {
        //组ID显示text
        mTxtGroupid = findViewById(R.id.groupid);
        //人脸标识显示text
        mEdtAuthid = findViewById(R.id.online_authid);

        //界面按钮点击处理
        findViewById(R.id.group_create).setOnClickListener(this);
        findViewById(R.id.group_delete).setOnClickListener(this);
        findViewById(R.id.online_register).setOnClickListener(this);
        findViewById(R.id.take_pic).setOnClickListener(this);
        findViewById(R.id.recognition_face).setOnClickListener(this);
      //提前创建一个组进行组的设置
        mTxtGroupid.setText("******");
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.group_create: //创建组
                createGroup();
                break;
            case R.id.group_delete: //删除组
                deleteGroup(mGroupId);
                break;
            case R.id.online_register: //在线注册人脸信息
                registerFace();
                break;
            case R.id.take_pic: //拍摄照片
                Intent mIntent = new Intent(MainActivity.this, CameraActivity.class);
                startActivityForResult(mIntent, 1000);
                break;
            case R.id.recognition_face: //识别照片中的人脸信息
                recognitionFace();
                break;
        }
    }

    /**
     * 创建组
     */
    private void createGroup() {
        // 创建人脸组
        faceGroupHelper.createGroup(new StarMscAbility.onResultCallback() {
            @Override
            public void onResult(boolean flag, String result) {
                Log.d("MainActivity", "result = " + flag + " groupId = " + result);

                if (flag) {
                    mGroupId = result;
                    mTxtGroupid.setText(result);
                    showToast("创建组成功:" + result + "-请牢记你的GroupId!!!");
                } else {
                    showToast("创建组失败:" + result);
                }
            }
        });
    }

    /**
     * 删除组
     */
    private void deleteGroup(String groupid) {
        if (mGroupId.equals("")) {
            showToast("Please Create GroupId Frist");
            return;
        }
        faceGroupHelper.deleteGroup(groupid, new StarMscAbility.onResultCallback() {
            @Override
            public void onResult(boolean flag, String result) {
                if (flag) {
                    mTxtGroupid.setText("");
                    showToast("删除组成功");
                } else {
                    showToast("删除组失败" + result);
                }
            }
        });
    }

    /**
     * 人脸注册
     */
    private void registerFace() {
        if (mGroupId.equals("")) {
            showToast("Please Create GroupId Frist");
            return;
        }
        if (mImage == null) {
            showToast("请拍照");
        }
        if (null == mEdtAuthid.getText() || mEdtAuthid.getText().toString().equals("")) {
            showToast("请输入userId");
        }
        userId = mEdtAuthid.getText().toString();
        faceRegisterHelper = new FaceRegisterHelper(this);
        faceRegisterHelper.startRegister(userId, mImage,
                new StarMscAbility.onResultCallback() {
                    @Override
                    public void onResult(boolean flag, String result) {
                        if (flag) {
                            showToast("人脸模型注册成功:" + mEdtAuthid.getText());
                            //注册成功后加组
                            faceGroupHelper.addFace(userId, mGroupId, new StarMscAbility.onResultCallback() {
                                @Override
                                public void onResult(boolean flag, String result) {
                                    Log.d("MainActivity", "result = " + result);
                                    if (flag) {
                                        showToast("人脸注册加组成功:" + result);
                                    } else {
                                        showToast("人脸注册加组失败:" + result);
                                    }
                                }
                            });
                        } else {
                            showToast("注册模型注册失败:" + result);
                        }
                    }
                });
    }

    /**
     * 人脸识别
     */
    private void recognitionFace() {
        if (mGroupId.equals("")) {
            showToast("Please Create GroupId First");
            return;
        }
        if (mImage == null) {
            showToast("请拍照");
        }
        faceVerifyHelper.setFaceVerifyResultCallback(new StarMscAbility.onResultCallback() {
            @Override
            public void onResult(boolean flag, String result) {
                //返回参数flag为人脸识别结果
                //当flag为true时,result为空,表示图片中检测到了人脸,但没有匹配到人脸库中的人脸信息,当msg不为空时,msg的值表示匹配到的人脸结果(注册时提交的人脸标识)
                //当flag为false时,result的值表示人脸识别失败的信息(包括图片中没有检测到人脸)
                if (flag) {
                    if ("".equals(result)) {
                        showToast("该人脸还未注册!");
                    } else {
                        showToast("识别成功,欢迎您:" + result);
                    }
                } else {
                    showToast("没有匹配到人脸");
                }
            }
        });
        faceVerifyHelper.sendGroupVerify(mGroupId,mImage);
    }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode,resultCode,data);
        if (resultCode != RESULT_OK) {
            return;
        }
        String fileSrc = null;
        if (requestCode == 1000) {
            fileSrc = data.getStringExtra("bitmap");
            if (null != fileSrc) {
                // mPath = fileSrc;
                // 获取图片的宽和高
                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inJustDecodeBounds = false;

                // 压缩图片
                options.inSampleSize = Math.max(1, (int) Math.ceil(Math.max(
                        (double) options.outWidth / 512f,
                        (double) options.outHeight / 512f)));
                mImage = BitmapFactory.decodeFile(fileSrc, options);


                // 若mImageBitmap为空则图片信息不能正常获取
                if (null == mImage) {
                    showToast("图片信息无法正常获取!");
                    return;
                }
                ByteArrayOutputStream baos = new ByteArrayOutputStream();

                //可根据流量及网络状况对图片进行压缩
                mImage.compress(Bitmap.CompressFormat.JPEG, 80, baos);
                // mImageData = baos.toByteArray();

                ((ImageView) findViewById(R.id.online_img)).setImageBitmap(mImage);
            }
        }

    }



    /**
     * 显示toast提升信息
     *
     * @param value
     */
    private void showToast(String value) {
        Toast.makeText(this, value, Toast.LENGTH_SHORT).show();
    }

}

💖💖步骤 5:应用权限申请

跟以前在安装 APP 的是就申请了权限不同,Google 在 API 23,也就 Android6.0 之后加入了动态权限。对于一些敏感的权限,决定权交还给了用户, 不再是强制申请了。因为这个原因,如果 APP 需要支持 Android6.0 以上的系 文档密级:外部公开 20 统,就需要进行一下适配,否则 APP 就会崩溃。 除了进入设置手动开启权限,还有两种方式让应用获得权限:动态权限申请、 平台签名。本次实验我们采用平台签名的方式获得权限。科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习

💖💖步骤6:实验结果

科大讯飞人脸识别,Android,人工智能,计算机视觉,机器学习

由上图可知试验成功,可以通过摄像头捕捉到我(注意:此处应该先创建group,然后再人脸识别)
具体流程如下:

💥💥1、我们先点击“创建Group”按钮,创建人脸组,完成人脸组的创建后,界面上会显示组ID信息;
💥💥2、然后我们点击“拍照”按钮,使用机器人开发平台的摄像头对准脸部进行拍照,完成后,界面上会显示照片信息,确保照片包含完整的人脸图片;
💥💥3、在用户标识输入框里面输入人脸标识信息,使用字母+数字的方式,然后点击“人脸注册”按钮,注册成功会弹出提示信息;
💥💥4、熟悉了人脸注册的方法,我们可以找不同的人按照同样的方式多注册几个人脸信息;
💥💥5、完成了人脸信息的注册后,我们使用摄像头再进行拍照,然后点击“人脸识别”按钮,查看是否对已经注册过的人脸信息能够准确的进行识别。


🍓🍓 参考资料与扩展阅读

1)Android 开发工具网站
2)Android 开发者社区
3)科大讯飞 AIUI 开放平台
4)科大讯飞开放平台文档中心








觉得有用的可以给个三连,关注一波!!!带你了解更多的智能机器人小知识文章来源地址https://www.toymoban.com/news/detail-760692.html

到了这里,关于讯飞AIUI智能机器人6-----人脸识别技术的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常见大模型对比[ChatGPT(智能聊天机器人)、Newbing(必应)、Bard(巴德)、讯飞星火认知大模型(SparkDesk)、ChatGLM-6B]

    目录 1 引言 2 选取常见的大模型作为对比项 2.1什么是大模型 2.2 常见大模型 3 相关的大模型介绍和功能 3.1 ChatGPT 3.1.1 ChatGPT的介绍 3.1.2 ChatGPT的原理 3.1.3 ChatGPT的特点 3.2 Newbing 3.2.1 Newbing的介绍 3.2.2 GPT-4的原理 3.2.3 Newbing的特点 3.3 ChatGLM-6B 3.3.1 ChatGLM的介绍 3.3.2 ChatGLM的原理 3.3

    2024年02月11日
    浏览(49)
  • 智能机器人的智能化机器人机器人协同与机器人机器人协同机器人模拟与仿真技术

    作者:禅与计算机程序设计艺术 《77. \\\"智能机器人的智能化机器人机器人协同与机器人机器人协同机器人模拟与仿真技术\\\"》 随着科技的发展,人工智能在机器人领域得到了广泛应用。智能机器人不仅具备高效率、高精度、高可靠性等优点,还可以进行自主决策、路径规划、

    2024年02月09日
    浏览(100)
  • 智能机器人在机器人机器人感知与运动控制技术与应用案例

    作者:禅与计算机程序设计艺术 当前,物联网、云计算、人工智能和机器人技术已成为我国产业界研究热点。随着机器人的高速发展,无论是研究、制造还是服务,都受到了越来越多的关注。同时,随着大数据、IoT(Internet of Things)技术的广泛应用,机器人应用也被迅速推向

    2024年02月09日
    浏览(59)
  • AI智能机器人的语音识别是如何实现的 ?

    什么是智能语音识别系统?语音识别实际就是将人类说话的内容和意思转化为计算机可读的输入,例如按键、二进制编码或者字符序列等。与说话人的识别不同,后者主要是识别和确认发出语音的人并非其中所包含的内容。语音识别的目的就是让机器人听懂人类所说的语言,

    2024年02月10日
    浏览(49)
  • 人工智能机器人技术概述

    移动机器人是一种能够在其环境中移动的自主或半自主机器人系统,通常是通过轮子或履带进行移动。这些机器人旨在在各种环境中执行各种任务,包括探索、监视、检查、运输和操作,包括室内和室外空间、危险区域甚至其他星球。 移动机器人配备传感器,例如摄像头,激

    2023年04月17日
    浏览(57)
  • 智能检测技术在机器人领域的应用

    [toc] 智能检测技术在机器人领域的应用 随着机器人技术的不断发展,智能检测技术在机器人领域的应用也越来越广泛。智能检测技术可以用于机器人的自主导航、避障、感知、决策等方面。本文将介绍智能检测技术在机器人领域的应用,包括技术原理及概念、实现步骤与流程

    2024年02月07日
    浏览(42)
  • 智能机器人:打造自动化未来的关键技术

    🎉欢迎来到AIGC人工智能专栏~智能机器人:打造自动化未来的关键技术 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:AIGC人工智能 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平

    2024年02月09日
    浏览(51)
  • 机器人感知与控制关键技术及其智能制造应用

    源自:自动化学报       作者:王耀南 江一鸣 姜娇 张辉 谭浩然 彭伟星 吴昊天  曾凯 智能机器人在服务国家重大需求, 引领国民经济发展和保障国防安全中起到重要作用, 被誉为“制造业皇冠顶端的明珠”. 随着新一轮工业革命的到来, 世界主要工业国家都开始加快机器人

    2024年02月09日
    浏览(69)
  • 如何利用文本分析技术进行智能客服机器人和智能推荐

    作者:禅与计算机程序设计艺术 随着互联网网站、社交媒体、购物平台等都在蓬勃发展,人们对电子商务、网络服务的需求也越来越高,而目前市场上智能化客服机器人的应用也日益增多。智能客服机器人和智能推荐系统通过巧妙地理解用户的问题并给出相应的回答或者推荐

    2024年02月07日
    浏览(53)
  • 走进人工智能|机器人技术 人机协作新纪元

    前言: 机器人技术为人类提供协助、增强生产力,改善生活质量,并推动科技进步和社会发展。 机器人技术作为现代科技领域的重要研究方向,已经在各个领域展现出巨大的潜力和影响力。 随着人工智能、感知技术和机械工程的进步,机器人能够模拟和执行人类的动作和任

    2024年02月12日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包