flutter开发实战-人脸识别相机使用

flutter开发实战-人脸识别相机使用

当需要拍摄的时候,需要检测到人脸再进行后续的操作,这里使用的是face_camera
在这里插入图片描述

一、引入face_camera

在工程的pubspec.yaml中引入插件

   # 检测人脸face_camera: ^0.0.8

iOS端需要设置相关权限
在info.plist文件中,设置相机等权限

<key>NSCameraUsageDescription</key><string>Take a photo for display</string><key>NSMicrophoneUsageDescription</key><string>Take a video for display</string><key>NSPhotoLibraryUsageDescription</key><string>Read your photos for display</string><key>UIApplicationSupportsIndirectInputEvents</key>

二、人脸识别相机使用

第一步是在main.dart中初始化face_camera

void main() async{WidgetsFlutterBinding.ensureInitialized(); //Add thisawait FaceCamera.initialize(); //Add thisrunApp(const MyApp());
}

然后在应用程序中渲染组件,设置onCapture回调。

  @overrideWidget build(BuildContext context) {return Scaffold(body: SmartFaceCamera(autoCapture: true,defaultCameraLens: CameraLens.front,message: 'Center your face in the square',onCapture: (File? image){},));}

完整代码如下

import 'dart:io';import 'package:flutter/material.dart';import 'package:face_camera/face_camera.dart';class FaceCameraPage extends StatefulWidget {const FaceCameraPage({Key? key}) : super(key: key);@overrideState<FaceCameraPage> createState() => _FaceCameraPageState();
}class _FaceCameraPageState extends State<FaceCameraPage> {File? _capturedImage;@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('FaceCamera example app'),),body: Builder(builder: (context) {if (_capturedImage != null) {return Center(child: Stack(alignment: Alignment.bottomCenter,children: [Image.file(_capturedImage!,width: double.maxFinite,fit: BoxFit.fitWidth,),ElevatedButton(onPressed: () => setState(() => _capturedImage = null),child: const Text('Capture Again',textAlign: TextAlign.center,style:TextStyle(fontSize: 14, fontWeight: FontWeight.w700),))],),);}return SmartFaceCamera(autoCapture: true,defaultCameraLens: CameraLens.front,onCapture: (File? image) {setState(() => _capturedImage = image);},onFaceDetected: (Face? face) {//Do something},messageBuilder: (context, face) {if (face == null) {return _message('Place your face in the camera');}if (!face.wellPositioned) {return _message('Center your face in the square');}return const SizedBox.shrink();});}),);}Widget _message(String msg) => Padding(padding: const EdgeInsets.symmetric(horizontal: 55, vertical: 15),child: Text(msg,textAlign: TextAlign.center,style: const TextStyle(fontSize: 14, height: 1.5, fontWeight: FontWeight.w400)),);
}

三、小结

flutter开发实战-人脸识别相机使用

学习记录,每天不停进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/690941.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter使用While控制器

1.前言 对于性能测试场景中,需要用”执行某个事物,直到一个条件停止“的概念时,While控制器控制器无疑是首选,但是在编写脚本时,经常会出现推出循环异常,获取参数异常等问题,下面总结两种常用的写法 2.${flag}直接引用判断 1.在预处理器中定义一个flag 或者在用户定…

AR人像滤镜SDK解决方案,专业调色,打造个性化风格

视觉内容已成为企业传达品牌价值和吸引用户眼球的重要载体&#xff0c;为满足企业对于高质量、多样化视觉内容的迫切需求&#xff0c;美摄科技凭借先进的AR技术和深厚的图像处理经验&#xff0c;推出了业界领先的AR人像滤镜SDK解决方案。 一、一站式解决方案&#xff0c;覆盖多…

Linux服务器常用巡检命令,查看日志

查看日志 3.1 通过journalctl命令查看系统日志 命令&#xff1a;journalctl 3.2 通过tail查看系统日志 查看日志文件多少行代码&#xff1a;tail -n [行数] [日志文件] 4. 服务状态 4.1 查看指定服务的状态 命令&#xff1a;systemctl status <service> 比如查看防火墙…

arm架构下安装conda

一、参考文章&#xff1a;感谢这位网友的分享&#xff0c;搬过来以备过几天使用&#xff0c;这种小众系统真的有些麻烦解决方案&#xff1a;ARM架构下安装Miniconda 离线配置Conda环境的全流程及踩坑避坑指南 - 技术栈 二、步骤 2.1 确认系统架构 uname -m 2.2 根据架构下载…

免疫优化算法(Immune Optimization Algorithm)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 算法背景 免疫算法是一种模拟生物免疫系统的智能优化算法。想象一下&#xff0c;当我们的身体遇到病毒或细菌侵袭时&#xff0c;免疫系统会启动…

前端 | TED打卡号分类查询

文章目录 &#x1f4da;实现效果&#x1f4da;模块实现解析&#x1f407;html&#x1f407;css&#x1f407;javascript &#x1f4da;实现效果 提供完整TED打卡号对应TED标题的查询列表 根据分类按需查询 &#x1f4da;模块实现解析 &#x1f407;html 搭框架<div cl…

解决“电脑开机黑屏Explorer进程卡死“问题

今天&#xff0c;给台式机按电源键&#xff0c;进入windows系统时&#xff0c;发现电脑黑屏了&#xff0c;昨天还好好的&#xff0c;怎么今天电脑桌面进不去了&#xff1f;想起Windows XP、Windows 7、Windows 10 、Windows 11等系统&#xff0c;在使用多个文件拷贝时&#xff…

Centos 停服倒计时!你的操作系统何去何从?

在计算机技术的不断演进中&#xff0c;操作系统扮演着至关重要的角色。然而&#xff0c;对于许多企业和个人用户来说&#xff0c;CentOS的突然停服消息带来了一场不小的冲击。作为一款备受欢迎的企业级Linux发行版&#xff0c;CentOS的停服意味着用户需要重新评估自己的操作系统…

##15 探索高级数据增强技术以提高模型泛化能力

文章目录 前言数据增强的重要性常见的数据增强技术高级数据增强技术在PyTorch中实现数据增强结论 前言 在深度学习领域&#xff0c;数据增强是一种有效的技术&#xff0c;它可以通过在原始数据上应用一系列变换来生成新的训练样本&#xff0c;从而增加数据的多样性&#xff0c…

linux day 3

touch 创建文件命令 cat命令&#xff0c;查看文件内容 more命令&#xff0c;查看文件内容。 cat是直接全部显示出来&#xff0c;more是支持翻页&#xff0c;即文件内容过多可以一页一页显示&#xff08;按空格翻页&#xff0c;按Q进行退出&#xff09; cp命令&#xff0c;复制…

C++中调用python函数(VS2017+WIN10+Anaconda虚拟环境)

1.利用VS创建C空项目 step1 文件——新建——项目 step2 Visual C—— Windows桌面——Windows桌面向导 step3 选择空项目 step4 源文件——新建项——添加 step5 Visual C——C文件&#xff08;.cpp&#xff09; 2.配置环境 Step1. 更换成Release与X64 Step2. 打开项目属性&…

51单片机入门:串口通信

串行通信的初步认识 通信方式分类 1、按照数据传送方式&#xff1a; 并行通信&#xff1a;通信时数据的各个位同时传送&#xff0c;可以实现字节为单位的通信。 但是通信线多&#xff0c;占用资源多&#xff0c;成本高。 串行通信&#xff1a;一次只能发送一位&#xff0c…