主要内容

adtfFileReader

从ADTF DAT文件读取流信息

自从R2022a

    描述

    一个adtfFileReader对象读取与汽车数据和时间触发框架(ADTF) DAT文件中的各种传感器相关的流信息。ADTF是Elektrobit开发的一个框架,用于开发、可视化、测试和验证高级驾驶辅助系统(ADAS)和自动驾驶功能。DAT文件包含来自各种传感器的数据,如激光雷达和摄像头以及其他汽车数据。

    选择要从数据库中读取的特定类型的消息adtfFileReader对象时,使用选择对象的功能。

    adtfFileReader支持读取2.0和3.0版本的ADTF DAT文件。DAT文件中的每个流必须包含已排序的块时间戳。此要求仅适用于流内的数据,而不适用于跨多个流。

    创建

    描述

    例子

    adtfReader= adtfFileReader (dataFileName创建一个adtfFileReader对象,adtfReader,它从指定的ADTF DAT文件中读取流信息。

    adtfReader= adtfFileReader (dataFileNamedescriptionFileName指定一个描述文件,descriptionFileName,它定义了ADTF DAT文件中的流的结构。

    adtfReader= adtfFileReader (dataFileNamepluginDirectoryPath指定目录,pluginDirectoryPath,其中包含从ADTF DAT文件读取信息时使用的插件。插件是特定于操作系统的编译后的目标文件,有助于读取DAT文件。

    adtfReader= adtfFileReader (dataFileNamedescriptionFileNamepluginDirectoryPath指定从ADTF DAT文件读取数据的插件目录和描述文件。

    输入参数

    全部展开

    ADTF DAT文件名,指定为字符串标量或字符向量。

    描述文件名,指定为字符串标量或字符向量。描述文件的扩展名为asXML描述

    ADTF插件目录的绝对路径,指定为字符串标量或字符向量。对象仅使用指定目录中具有.adtffileplugin扩展。

    属性

    全部展开

    此属性是只读的。

    要读取的ADTF DAT文件的绝对路径,指定为字符串标量。

    此属性是只读的。

    描述文件的绝对路径,指定为字符串标量。

    此属性是只读的。

    ADTF插件目录的绝对路径,指定为字符串标量。

    此属性是只读的。

    DAT文件中的流的个数,指定为正整数。

    此属性是只读的。

    DAT文件中所有流的摘要,指定为结构。

    对象的功能

    选择 为选定的ADTF DAT文件数据子集创建阅读器

    例子

    全部折叠

    这个例子展示了如何提取和可视化存储在ADTF DAT文件中的视频流。它还展示了如何将视频流写入视频文件。

    下载示例视频DAT文件。

    downloadURL =“https://ssd.mathworks.com/supportfiles/driving/data/sample_can_video_dat.zip”;dataFolder = fullfile(tempdir,“adtf-video”, filesep);选项= weboptions(“超时”、正);zipFileName =[数据文件夹,“sample_can_video_dat.zip”];folderExists = exist(数据文件夹“dir”);在临时目录中创建一个文件夹来保存下载的文件。如果~ folderExists mkdir (dataFolder);disp (正在下载sample_can_video_data .zip (9.74 MB)…) websave(zipFileName, downloadURL,选项);提取下载文件的内容。disp (“提取sample_can_video_dat.zip…”)解压(zipFileName, dataFolder);结束
    下载sample_can_video_data .zip (9.74 MB)…
    提取sample_can_video_dat.zip……

    创建ADTF File Reader对象。

    datFileName = fullfile(数据文件夹,“sample_can_video.dat”);fileReader = adtfFileReader(datFileName)
    fileReader = DataFileName: "C:\Users\latriwal\AppData\Local\Temp\adtf-video\sample_can_video.dat" DescriptionFileName: "" PluginDirectory: "" StreamCount: 2 StreamInfo: StreamIndex StreamName StreamType StartTime EndTime ItemCount SubstreamInfo ___________ __________ ______________ _________ __________ _________ _____________ 1 {'rawcan'} {'UNRESOLVED'} 0 sec 14.805 sec 743 {0×1 struct} 2 {'video'} {'adtf/image'} 0 sec 14.799 sec 149 {0×1 struct}

    StreamInfo属性,请注意视频流的索引为2。使用选择的功能adtfFileReader对象,以选择要读取的视频流。返回的adtfStreamReader对象具有关于选择的所有信息。

    streamReader = select(fileReader,2)
    streamReader = adtfStreamReader with properties: DataFileName: "C:\Users\latriwal\AppData\Local\Temp\adtf-video\sample_can_video.dat" DescriptionFileName: "" PluginDirectory: "" StreamIndex: 2 StartIndex: 1 EndIndex: 149 CurrentIndexOffset: 0 StartTime: [0×0 duration] EndTime: [0×0 duration] DataCount: 149

    注意的值CurrentIndexOffset是0。这意味着下一个readNext调用将返回第一项。

    预览流中的第一个图像帧。

    firstFrame = readNext(streamReader);imshow (firstFrame.Data.Item)

    在创建视频之前,请使用重置函数从第一帧开始读取。的值将被重置CurrentIndexOffset为0。

    重置(streamReader);流("CurrentIndexOffset = %d\n"streamReader.CurrentIndexOffset)
    CurrentIndexOffset = 0

    创建一个VideoWriter对象,可用于将图像帧写入视频文件。指定帧速率为每秒1帧。

    videoWriterObj = VideoWriter(“example_video.avi”);videoWriterObj。FrameRate = 1;打开(videoWriterObj);

    使用streamReader对象,则逐一遍历选择项中的数据项。的hasNext函数确定在增量读取文件时是否还有一个项需要读取。readNext返回数据项,该数据项基本上是包含数据和相关时间戳的结构。在每次迭代中,提取图像帧并将其写入视频文件。

    streamReader.hasNext() streamData = streamReader.readNext();imageFrame = streamData.Data.Item;frame = im2frame(streamData.Data. data . frame)项,灰色);writeVideo (videoWriterObj框架);结束

    方法同时读取所有图像帧函数,然后对其进行迭代。

    allData = read(streamReader)
    allData =带字段的结构:StreamIndex: 2数据:[149×1 struct]

    关闭与视频文件的连接。

    关闭(videoWriterObj);关闭所有

    可视化输出文件example_video.avi使用视频查看器

    implay (“example_video.avi”

    Figure Movie Player包含一个axis对象和其他类型为uiflowcontainer、uimenu、uitoolbar的对象。axis对象包含一个image类型的对象。

    限制

    • 不支持在Mac平台上读取DAT文件。

    • 不支持读取这些流类型:

      • adtf /匿名

      • adtf /音频

    • 阅读adtf / video_compressed流类型,只支持JPEG压缩格式。

    版本历史

    R2022a中引入

    Baidu
    map