首页
  • GM-3568JHF
  • M4-R1
  • M5-R1
  • SC-3568HA
  • M-K1HSE
  • CF-NRS1
  • CF-CRA2
  • 1684XB-32T
  • 1684X-416T
  • RDK-X5
  • RDK-S100
  • C-3568BQ
  • C-3588LQ
  • GC-3568JBAF
  • C-K1BA
商城
  • English
  • 简体中文
首页
  • GM-3568JHF
  • M4-R1
  • M5-R1
  • SC-3568HA
  • M-K1HSE
  • CF-NRS1
  • CF-CRA2
  • 1684XB-32T
  • 1684X-416T
  • RDK-X5
  • RDK-S100
  • C-3568BQ
  • C-3588LQ
  • GC-3568JBAF
  • C-K1BA
商城
  • English
  • 简体中文
  • CF-NRS1

    • 一、简介

      • 01-产品介绍
      • 02-相关概念
      • 03-MultiVision Studio 介绍
    • 二、开发

      • 01-ShiMetaPi Hybrid vision SDK 介绍
      • 02-Hybrid_vision_toolkit
      • 03-Hybrid_vision_toolkit API (C++)
      • 04 Hybrid Vision algo
      • 05 Hybrid vision algo API
    • 三、资料下载

      • 资料下载
    • 四、常见问题

      • 常见问题解决指南
  • CF-CRA2

    • 一、简介

      • CF-NRS2 简介
    • 二、资料下载

      • 资料下载
  • EVS模块

    • 一、相关概念
    • 二、硬件准备与环境配置
    • 三、示例程序使用指南
    • 资料下载

三、示例程序使用指南

4 示例程序使用指南&功能演示

4.1 实时预览与录制 (evs_live_player)

4.1.1 功能说明

evs_live_player 是最基础的示例程序,提供两个核心功能:

  1. 实时预览:在屏幕上显示事件相机捕获的画面
  2. 数据录制:将事件数据保存为 RAW8 格式文件

4.1.2 使用前准备

确保:

  • ✓ EVS 相机已正确连接
  • ✓ 显示器已连接(用于预览)

4.1.3 使用说明

先进入到工程目录,赋予程序可执行权限后查看可用的传感器:

cd /app/cdev_demo/sample_evs/evs_mode_release/sample/01_evs_live_player/
chmod +x evs_live_player.RAW8
sudo ./evs_live_player -s

传感器列表

注意目前只适配了apx003c-4096x256-240fps-4line这组配置文件,这里选择索引40执行

执行后:

  1. 程序启动,打开相机
  2. 弹出预览窗口显示实时画面

实时预览窗口

如果需要进行录制,可以通过快捷键r切换录制开关,数据会写入到内存中,录制结束后写到SD卡中

录制过程

录制结束以后,文件会自动命名并保存到当前目录。

注意

模块内部集成加密芯片,本程序只适用于 shimeta 的 evs 模块。

4.1.4 FAQ

这里解释一下为什么要先把数据写入到内存中:

由于RDKX5并没有集成EMMC存储,只配备了4/8G可选的DDR4内存,系统文件都存储在SD卡中,大部分的SD卡在非连续文件读写的时的速度都不高,加上SD卡的质量参差不齐,而EVS相机的一大特点就是高帧率,虽然数据量不大,但是耐不住帧率高,笔者了解到国产的EVS相机传感器帧率最大已经达到了64K!

我们再对使用的SD卡和板卡自带的DDR进行读写速度测试,笔者使用的SD卡测试结果如下:

SD卡写入测试(12MB/S):

dd if=/dev/zero of=/tmp/test_write bs=1M count=256 conv=fdatasync

SD卡读取测试(24MB/S):

fio --name=read_test --ioengine=sync --rw=read --bs=1M --size=256M --numjobs=1 --filename=/tmp/test_write

SD卡读写速度测试

内存读写速度测试(写765MB/S ; 读 1.7GB/S)

写入测试:

dd if=/dev/zero of=/dev/shm/memtest bs=1M count=1024 conv=fdatasync

读取测试:

dd if=/dev/shm/memtest of=/dev/null bs=1M count=1024

内存读写速度测试

实测发现两者的速度差距快达到100倍了! 高帧率时开启录制,SD卡的读写速度就明显吃力了,把数据暂存到内存也是无奈之举。


4.2 格式转换工具

4.2.1 RAW8 转 EVT2 (raw8_to_evt2)

为什么需要转换?

虽然说RDKX5宣传有10T的算力,但这一块的算力主要集中于BPU,而我们解码主要使用CPU资源 经过实测,将原始mipi数据包进行解码并实时显示,CPU无法完成如此大算力的计算,大于120FPS时画面出现明显卡顿。 为了显示的实时性,我们只对每个mipi包第一个完整帧进行解码显示。录制时,剩下的原始数据直接保存到内存用于后续解码。 那为什么不对原始数据包直接进行分析,而是先转换成EVT2格式呢? 而EVT2 格式是Metavision SDK 标准格式,可以兼容我们的windows上位机软件和Ubuntu上的完整算法库,所有提供了保存的原始数据转换成EVT2格式的中间过程。

使用方法:

cd /app/cdev_demo/sample_evs/evs_mode_release/sample/02_raw8_to_evt2/
chmod +x raw8_to_evt2

# 转换后的文件直接生成在当前目录
./raw8_to_evt2 /userdata/hand_wave.RAW8

# 指定转换后的文件到指定目录
./raw8_to_evt2 /userdata/hand_wave.RAW8 /userdata/output.raw

转换过程:

RAW8转EVT2转换过程

4.2.2 EVT2 转 CSV (evt2_to_csv)

为什么转换为 CSV?

CSV 是通用的表格格式,便于:

  • 在 Excel 中查看和分析
  • 使用 Python/MATLAB 进行数据处理
  • 可视化工具绘图

CSV 文件格式:

x,y,polarity,timestamp
352,240,1,1234567890
120,180,0,1234567920
425,305,1,1234568100
...
列名含义取值范围
x横坐标0-767
y纵坐标0-607
polarity极性0(变暗)或 1(变亮)
timestamp时间戳微秒

使用方法:

cd /app/cdev_demo/sample_evs/evs_mode_release/sample/02_evt2_to_csv
chmod +x evt2_to_csv

# 转换后的文件直接生成在当前目录
./evt2_to_csv /userdata/hand_wave.raw

# 指定转换后的文件到指定目录
./evt2_to_csv /userdata/hand_wave.raw /userdata/events.csv

EVT2转CSV转换过程

转换后的文本文件可以直接打开查看

CSV文件内容

注意,不要轻易打开长时间录制的转换文件,几百MB的纯txt文件,电脑不好的话大概率宕机了


4.3 录制文件回放 (evs_recode_player)

4.3.1 功能说明

evs_recode_player 用于回放录制的事件数据,支持变速播放(x1, x1/2, x1/8)

4.3.2 使用方法

cd /app/cdev_demo/sample_evs/evs_mode_release/sample/04_evs_recode_player

# 播放 EVT2 格式文件
./evs_recode_player /userdata/hand_wave.raw

4.3.3 使用说明

回放窗口

画面循环播放,按快捷键1 正常倍速播放 ,2以1/2速度播放 , 3以1/8速度播放

在 GitHub 上编辑此页
上次更新:
贡献者: fxx
Prev
二、硬件准备与环境配置
Next
资料下载