从任意时间作为起始点读取intel深度相机录制的bag文件

2023-12-14 10:45:16

首先介绍两个函数,第一个是seek()。seek()是RealSense SDK中rs2::playback类的一个方法,用于在回放时设置当前时间。

playback.seek(timestamp);

其中,timestamp是希望回放跳转到的时间点,以微秒为单位。以下是一个实例,不懂的问gpt

rs2::pipeline pipe;

rs2::config cfg;

cfg.enable_device_from_file("test.bag");

auto profile = pipe.start(cfg);

auto device = profile.get_device();

auto playback = device.as<rs2::playback>();

playback.set_real_time(false);

std::chrono::milliseconds start_time(60* 1000000);//设置从60秒开始播放

playback.seek(start_time);

这里要讲的另外一个函数是set_real_time()。以下是gpt的解释,肯定比我解释的详细:

set_real_time()函数是RealSense SDK中rs2::playback类的一个方法,用于控制回放是否以实时模式进行。

实时模式是指回放过程中以与原始数据采集的实际时间相同的速率进行回放。默认情况下,回放是以实时模式进行的,这意味着帧数据将按照与原始数据采集相同的时间间隔传递。

通过调用set_real_time(false),您可以将回放模式设置为非实时模式。在非实时模式下,回放速度可以根据需要进行加速或减速,而不受原始数据采集的时间间隔限制。

这对于某些应用场景非常有用,例如在回放时进行数据处理、分析或调试。非实时模式可以让您以更快或更慢的速度回放数据,以便更好地观察和分析帧数据。

需要注意的是,set_real_time()函数只对rs2::playback对象有效,它不适用于实时数据流(例如通过摄像头获取的实时数据)。

不关可能出现一种情况就是程序输出的速度比视频播放的速度慢,导致输出结果和视频当时展示的那一帧对不上。

文章来源:https://blog.csdn.net/mengzhilv11/article/details/134988018
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。