![]() |
DvsenseDriver
1.0.3
The SDK for dvsense products.
|
该部分介绍了如何通过 API 接口控制相机。并且介绍了 同步 和 异步 实时处理相机数据两种方法。
在 DvsenseDriver 中,所有相机使用 dvsense::DvsCameraManager 类进行统一管理。
dvsense::CameraDescription 中包含相机的制造商、产品型号、序列号等信息。
可以通过**产品型号**来区分事件相机或融合相机。
dvsense::DvsCameraManager::openCamera 接口可以使用序列号打开指定的事件相机
dvsense::CameraDevice 是对 dvsense::DvsCamera 的易用性封装 typedef std::shared_ptr<DvsCamera> CameraDevice
打开相机后,相机默认是不进行取流的,需要手动开启。
注意!! 在取流开始之前,请参照下面的 获取并处理事件 注册 异步处理事件 的回调函数,或者设置 同步处理事件 的规则
DvsenseDriver 中提供了两种获取和处理相机数据的方式,以适用于不同的需求和场景:
同步处理方式和异步处理方式可以同时进行,但是同步方式中的两种获取事件的设定,只能同时使用一种。也就是说,可以既注册回调函数,也可以使用 dvsense::DvsCamera::getNextBatch 函数主动获取下一包数据。但是 dvsense::DvsCamera::getNextBatch 只能设定为 获取固定时间/数量 两种设定中的一种。
相机提供了 dvsense::DvsCamera::addEventsStreamHandleCallback 接口,这个接口可以实时访问事件流。每当一小包事件完成传输和解码后,注册进入的回调函数就会被调用。
以下是一个使用示例,该示例中,对一张空白图片 img
中发生了事件的位置赋予颜色,以进行后续的可视化:
警告:在使用回调函数接口时,必须尽可能减少回调函数的执行时间,否则会导致数据累积并导致程序崩溃。
您可以使用 dvsense::DvsCamera::addEventsStreamHandleCallback 函数添加多个回调函数,当事件流可用时,这些回调函数将按照注册顺序依次执行。您也可以记录回调函数的ID号,使用 dvsense::DvsCamera::addEventsStreamHandleCallback 的返回值,然后通过 dvsense::DvsCamera::removeEventsStreamHandleCallback 函数删除不再需要的回调函数。
相机提供了 dvsense::DvsCamera::getNextBatch 接口,您可以设置获取事件的数量或时间,然后通过 dvsense::DvsCamera::getNextBatch 接口获取指定的事件数据。
如果您想获取固定数量的事件,您需要通过 dvsense::DvsCamera::setBatchEventsNum 接口预先设置所需的事件数量,
另外,如果您想获取固定时间段内的事件,您可以通过 dvsense::DvsCamera::setBatchEventsTime 接口设置所需的时间间隔,
一旦设置完成,您需要通过调用 dvsense::DvsCamera::getNextBatch 接口来获取数据。
在相机开始取流之后,可以使用 dvsense::DvsCamera::startRecording 和 dvsense::DvsCamera::stopRecording 将相机的原始数据流成 raw 文件,以便后续回放和处理。