UNI-APP 人脸识别分析及实现(前端)

这篇具有很好参考价值的文章主要介绍了UNI-APP 人脸识别分析及实现(前端)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

APP开发一个人脸识别,实现刷脸功能

实现流程:

1、打开摄像头——自动读取照片——传输给后端——后端交由第三发或自主开发来识别——返回结果(相识度比)
2、打开摄像头——自动读取视频——传输给后端——后端通过解析视频,截取图片交由第三发或自主开发来识别——返回结果(相识度比)
通过分析,只需要做两步骤:打开摄像头和自动读取视频或照片

打开摄像头

分步骤分析:打开摄像头,并展示视频效果在html上,目前有两种方式:
1、使用camera组件进行,借用.createcameracontext()对象来打开摄像头(由于平台差异,uniapp不能在App、H5、支付宝/字节跳动/飞书/360小程序中使用)
2、通过livepusher对象(直播推流技术)实现视频预览和截屏
现在就有两种获取推流的方式了:第一种是nvue开发,第二种vue开发
如果是nvue开发,可以直接使用live-pusher组件进行直播推流,如果是vue开发,则需要使用h5+的plus.video.LivePusher对象来获取

使用NVUE来开发人脸识别

实际实现流程:调用手机摄像头创建直播推流 → 自动截图 → 压缩图片为base64格式→ 上传图片到服务器 → 服务器调用阿里人脸api → 阿里api返回该图片与底图的相似度

html部分
<template>
    <view>
		<div class="custom" :style="{height: CustomBar+'px'}">
			<view class="navcontent" :style="[{top:statusBar + 'px'}]">
				<text style="color: #FFFFFF;font-size: 16px;line-height: 45px;" class="iconfont icon-xiangzuo" @click="BackPage">返回</text>
				<text style="color: #FFFFFF;font-size: 16px;line-height: 45px;">人脸识别</text>
				<text></text>
			</view>		
		</div>

        <div class="livefater">
			<div style="width: 350px;height: 350px;border-radius: 350px;overflow: hidden;background-color: #CCCCCC;">
				<live-pusher id='livePusher' ref="livePusher" class="livePusher" url=""
				mode="SD" :muted="true" :enable-camera="true" :auto-focus="true" :beauty="1" whiteness="2"
				aspect="1:1" @statechange="statechange" @netstatus="netstatus" @error = "error"
				></live-pusher>
			</div>
			<cover-image src="../static/image/gai.png" class="gaiimg"></cover-image>
		</div>
        <button class="btn" @click="startPreview">打开摄像头进行人脸识别</button>
    </view>
</template>
js部分
    export default {
        data: {
            fil: true,
			imgList:[""],
			statusBar:'',
			CustomBar: 0
        },
		onLoad(){
			// this.startPreview()
		},
        onReady() {
            // 注意:需要在onReady中 或 onLoad 延时
            this.context = uni.createLivePusherContext("livePusher", this);
			var that = this
			uni.getSystemInfo({  
				success:function(e){  
					// 计算导航栏高度
					that.statusBar = e.statusBarHeight  
					// #ifndef MP  
					if(e.platform == 'android') {  
						that.CustomBar = e.statusBarHeight + 50  
					}else {  
						that.CustomBar = e.statusBarHeight + 45  
					}  
					console.log(that.statusBar)
					// #endif  
					// #ifdef MP-WEIXIN  
					let custom = wx.getMenuButtonBoundingClientRect()  
					that.CustomBar = custom.bottom + custom.top - e.statusBarHeight  
					
					// #endif  
		
					// #ifdef MP-ALIPAY  
					that.CustomBar = e.statusBarHeight + e.titleBarHeight  
					// #endif  
				}
			})  
        },
        methods: {
			Timer(){},
            statechange(e) {
                console.log("statechange:" + JSON.stringify(e));
            },
            netstatus(e) {
                console.log("netstatus:" + JSON.stringify(e));
            },
            error(e) {
                console.log("error:" + JSON.stringify(e));
            },
            start: function() {
                this.context.start({
                    success: (a) => {
                        console.log("livePusher.start:" + JSON.stringify(a));
                    }
                });
            },
            close: function() {
                this.context.close({
                    success: (a) => {
                        console.log("livePusher.close:" + JSON.stringify(a));
                    }
                });
            },
			// 拍照事件
            snapshot: function() {
				var that = this
                this.context.snapshot({
                    success: (e) => {
                        console.log(JSON.stringify(e));
						that.getMinImage(e.message.tempImagePath)
                    }
                });
            },
			// 开启摄像头
            startPreview() {
				console.log("1")
				var that = this
                this.context.startPreview({
                    success: (a) => {
                        console.log("livePusher.startPreview:" + JSON.stringify(a));
						that.Timer = setInterval(function(){
							that.snapshot()
							if(that.imgList.length>3){
								console.log("3")
								clearInterval(that.Timer)
							}
						},2000)
                    }
                });
            },
			// 使用plus.zip.compressImage压缩图片并转换成base64
			getMinImage(imgPath) {
				plus.zip.compressImage(
					{
						src: imgPath,
						dst: imgPath,
						overwrite: true,
						quality: 40
					},
					zipRes => {
						setTimeout(() => {
							var reader = new plus.io.FileReader();
							reader.onloadend = res => {
								var speech = res.target.result; //base64图片
								console.log(speech);
								this.imgList.push(speech);
							};
							//一定要使用plus.io.convertLocalFileSystemURL将target地址转换为本地文件地址,否则readAsDataURL会找不到文件
							reader.readAsDataURL(plus.io.convertLocalFileSystemURL(zipRes.target));
						}, 1000);
					},
					function(error) {
						console.log('Compress error!', error);
					}
				);
			},
			BackPage() {
				uni.navigateBack({
					delta: 1
				});
			}

        }
    }
css部分
.custom{
	background-color: #2C65F7;
}
.navcontent{
	height: 45px;
	display: -ms-flex;
	display: -webkit-flex;
	display: flex;
	justify-content:space-around;
	flex-direction:row;
	color:#FFFFFF;
}
.livePusher{
	width: 350px;
	height: 350px;
}
.livefater{
	display: -ms-flex;
	display: -webkit-flex;
	display: flex;
	justify-content:center;
	flex-direction:column;
	align-items:center;
	margin-top: 50rpx;
	margin-bottom: 50rpx;
	height: 350px;
}
.gaiimg{
	width: 350px;
	height: 350px;
	margin-top: -350px;
}

使用微信小程序开发人脸识别

微信小程序开发人脸识别,有很大的限制,在于资质审核。
微信文档文章来源地址https://www.toymoban.com/news/detail-404434.html

到了这里,关于UNI-APP 人脸识别分析及实现(前端)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uni-app微信小程序接入人脸核身SDK

    写这篇文章是记录自己使用慧眼的流程,由于网上另外一篇友链,并不是很支持uniapp、vue3、ts的架构 接⼊准备 ⼩程序前端接⼝请求有域名⽩名单限制,如果不添加只能再调试模式下运⾏,上线前需要将如下两 个域名在⼩程序后台添加服务器域名 uni-app接⼊ 步骤⼀:注册并创

    2024年02月16日
    浏览(48)
  • uni-app实现跨端开发手机蓝牙接收和发送数据

    最近接触uni-app夸终端开发手机蓝牙模块的接收和发送数据功能, 手机蓝牙模块接发收数据主要流程步骤如下: 1、初始化手机蓝牙 2、根据设备id获取蓝牙服务, 3、根据蓝牙服务获取对应的蓝牙特征值 4、监听蓝牙特征值数值变化,发送对应数据到蓝牙特征值 具体

    2024年02月12日
    浏览(31)
  • Uni-app开发小程序|基于微信小程序报修系统设计与实现

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库

    2024年02月15日
    浏览(39)
  • 微信小程序使用uni-app开发小程序及部分功能实现详解心得

    目录 一、uni-app 1、简介 2、开发工具 3、新建 uni-app项目 4、把项目运行到微信开发者工具 二、实现tabBar效果 1、创建tabBar页面 2、配置tabBar 1、创建分包目录 2、在 pages.json 文件中配置 3、创建分包页面 四、公用方法封装 五、搜索功能 1、搜索组件 2、搜索建议实现 3、本地存储

    2024年02月11日
    浏览(43)
  • WebStorm开发uni-app ,用vue2实现手机APP(apk) + 微信小程序多端项目开发方案

    我们主要分析了如下小程序开发框架,主要包括: 框架 技术栈 案例 微信小程序 支付宝小程序 百度小程序 头条小程序 H5 App uni-app Vue 丰富 ⭕ ⭕️ ⭕️ ⭕ ⭕️ ⭕ Taro React 丰富 ⭕ ⭕ ⭕ ⭕ ⭕ ⭕ wepy Vue 丰富 ⭕ ❌ ❌ ❌ ❌ ❌ mpvue Vue 丰富 ⭕ ❌ ❌ ❌ ⭕️ ❌  首先,就要排

    2024年02月08日
    浏览(47)
  • 跨平台应用开发进阶(五十)uni-app ios web-view嵌套H5项目白屏问题分析及解决

    应用 uni-app 框架开发好APP上架使用过程中,发现应用经过长时间由后台切换至前台时,通过 webview 方式嵌套的H5页面发生白屏现象。 任何手机设备上,当手机内存不足时,os都会回收资源。一般是先回收后台打开的资源。如果当前应用占用的资源过高,当前应用也有可能崩溃

    2024年02月14日
    浏览(38)
  • uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)

        语音播报的实现的方法有很多种,我这里介绍集中不引用百度、阿里或者迅飞的API的实现方式。 一、采用new SpeechSynthesisUtterance的方式 废话不多说直接上代码 方法的结束事件 二、采用speak-tts插件的方式 1、安装speak-tts 2.使用 三、微信小程序可以采用微信提供的插件 1、添

    2024年02月16日
    浏览(35)
  • 前端vue uni-app自定义精美海报生成组件

    在当前技术飞速发展的时代,软件开发的复杂度也在不断提高。传统的开发方式往往将一个系统做成整块应用,一个小的改动或者一个小功能的增加都可能引起整体逻辑的修改,从而造成牵一发而动全身的情况。为了解决这个问题,组件化开发逐渐成为了一种趋势。通过组件

    2024年02月14日
    浏览(43)
  • uni-app开发记录

    目录 uni-app目录结构 uni-app中的事件 uni-app中的组件通信 页面通信 组件间通信 节点操作 定义全局scss变量 APP相关 解决uniapp编译到APP出现页面抖动与滑动条 tabbar添加一个位于中间的按钮 uni.pageScrollTo滚动问题 静态资源只能存放在static文件夹内 通过 uni.$emit(\\\"事件名\\\",val) 创建事件

    2024年02月05日
    浏览(39)
  • uni-app前端H5页面底部内容被tabbar遮挡

    在用uniapp写小程序的时候,底部有一部分内容没显示出来,被底部的tabbar遮挡住了 给最外部的view设置样式 padding-bottom: var(--window-bottom) ,如下 参考1 参考2 使用 uni-app 框架开发的一个项目,发现 H5 端页面底部的内容被导航栏(Tabbar)遮挡,小程序端可以正常显示。 查阅资料

    2024年02月04日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包