摄像头在安防监控和图像识别等领域被广泛应用。本文介绍如何通过EsDA开发套件,快速实现摄像头图像采集。
简介
近些年,随着生物识别技术的日益成熟,以及安防监控在公共安全领域的广泛应用,而这些应用领域都离不开摄像头的支持。但是,摄像头的应用框架往往都比较复杂,对使用者有一定的要求。
本文使用M6G2C核心板,简单介绍如何基于EsDA设计的camera摄像头功能节点,快速实现图像采集。
前期准备
若是刚开始接触EsDA,可先阅读EsDA其他系列文章,从零开始搭建环境和掌握基本开发流程,已有基础的可以跳过:
- EsDA MPC-ZC1 入门(一)—— 软件安装
- EsDA MPC-ZC1入门(二)—— LED控制
- 【EsDA应用】5分钟实现一个串口通信业务
1. 硬件准备
准备任意一个USB摄像头。
准备一块LCD显示屏。
准备一块M6G2C核心板和EPC-6G2C-L评估板,并按照下图所示连接好硬件。其中,eth0网口用于下载流图,并连接LCD显示屏接口、电源,以及将USB摄像头连接到开发板的USB HOST1接口。
节点介绍
这里我们需要使用到摄像头相关的AWFlow节点,包括camera_video节点和camera配置节点,以及lcd_display节点用于在显示屏中显示图像。
1. camera配置节点
摄像头的配置节点,属于隐式节点,不会显示在画布中,需要配套相应功能节点一起使用。
1.1 属性
- 设备名(device_name):摄像头设备文件的文件名,用于系统打开摄像头;
- 数据格式(format):摄像头输出的数据格式,支持常见的RGB565、RGB888、YUV422等多种格式;
- 宽度(width):摄像头输出图像的宽度;
- 高度(height):摄像头输出图像的高度。
2. camera_video
camera_video是摄像头的图像输入节点,该节点将摄像头在video模式下的每帧图像输出给下一节点。
2.1 属性
- 名称(name): 节点名称,用于索引查找本节点;
- 显示名称(displayName): 用于画布上显示的名称;
- 配置项(camera):绑定一个camera配置节点;
- 主题(topic):图像主题,可选。
2.2 输入
- enable:控制摄像头的图像输出,输入“enable”打开视频流输出,输入“disable”关闭视频流,由push节点提供输入。
2.3 输出
image:图像数据的缓冲区指针,通常由其它节点接收并处理
image:图像数据的缓冲区指针,通常由其它节点接收并处理
format:输出图像的格式;
width:输出图像的宽度;
height:输出图像的高度;
topic:输出用户在属性中设置的topic属性,可用于后续节点区分图像。
业务处理
本应用主要实现M6G2C开发板采集USB摄像头图像,并在LCD显示屏上进行显示。具体实现如下:
1. 添加节点并连线
使用AWFlow采集摄像头图像非常简单,只需添加一个camera_video图像输入节点,以及一个用于图像显示的lcd_display节点。
2. 配置节点
双击camera_video节点,并在配置项中选择添加一个新的camera节点。
在camera配置节点中,根据所使用的摄像头,分别设置设备名、输出图像的数据格式和图像宽度、高度。
然后更新配置,在camera_video节点的配置项中,选择上一步新增的camera配置节点即可。
lcd_display节点无需我们进行任何配置,它会获取camera_video节点的输出信息,将图像显示在LCD上。
3. 下载验证
因为M6G2C开发板是通过网口去下载流图,所以打开AWFlow Designer后需要配置目标板IP和端口号。然后点击下载运行即可。
流图下载完成后,通过LCD可以看到,我们已经成功从摄像头获取图像,并且成功在显示屏上显示。