最新讯飞AIUI智能机器人6-----人脸识别技术_科大讯飞人脸识别,大数据开发开发面试2024

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

在这里插入图片描述
在这里插入图片描述

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

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

在这里插入图片描述

完成SDK的集成后,我们需要再编译配置文件中进行能力包的导入配置,打开app目录下的build.gradle文件,添加下图中红框位置中代码
在这里插入图片描述
在这里插入图片描述

完整的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);
            }
        }

    }



    /\*\*


![img](https://img-blog.csdnimg.cn/img_convert/ff716d5ca2b93a49c976c17675d8c11f.png)
![img](https://img-blog.csdnimg.cn/img_convert/c8eec8093a97e9f24271eea654f4b3b9.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

}
        }

    }



    /\*\*


[外链图片转存中...(img-5GOpF6KB-1715824700354)]
[外链图片转存中...(img-Z5sjOPqA-1715824700354)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity科大讯飞语音识别是基于科大讯飞AIUI平台的一种人机交互解决方案。它整合了语音唤醒、语音识别、语义理解、内容平台、语音合成等能力。默认情况下,Unity科大讯飞语音识别自带语音识别功能。如果需要让AIUI回答你的问题,则需要开启语义理解。如果需要有声音输出,则需要开启语音合成。开启SDK时,可以返回语义理解和语音合成的数据。关于Unity科大讯飞语音识别的具体配置,可以参考<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>这个设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [unity接入AIUI(Windows SDK)](https://blog.csdn.net/weixin_41132607/article/details/130575204)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Unity接入科大讯飞的语音sdk](https://blog.csdn.net/u011721655/article/details/81169910)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值