我需要将.dat
格式的图像转换为.jpg
或.png
格式。我在stackoverflow上搜索了但找不到正确的答案。我尝试了以下代码:
import numpy as np datfile = "car_image.dat" # 将文件读入Numpy数组为uint8 na = np.fromfile(datfile , dtype=np.uint8) print(na.shape)
上述代码打印(65269,0)
,但我不知道接下来该怎么做才能将其转换为.png
或.jpg
图像。请你帮帮我,谢谢!
回答:
你误解了你下载的内容。
这些不是图像,它们是基于事件的数据集,这就是为什么它们以.dat
文件形式提供而不是图像。这在你发布的下载链接下方有明确说明:
Prophesee的N-CARS数据集,一个大型的现实世界基于事件的数据集,用于汽车分类
来自Prophesee发布的另一个数据集GEN-1,看起来使用了相同的编码:
每个dat文件是一个二进制文件,其中事件使用4个字节(无符号int32)来编码时间戳,4个字节(无符号int32)来编码数据,编码采用小端序。
他们还提供了一个ipynb教程,解释如何与它们交互。总结如下:
import numpy as npfrom src.io.psee_loader import PSEELoader# 打开一个文件video = PSEELoader("some_file_td.dat")print(video) # 显示一些元数据video.event_count() # 文件中的事件数量video.total_time() # 文件的持续时间,单位为微秒# 让我们读取一些事件,有两种方式,通过事件数量或通过时间片段events = video.load_n_events(10) # 这加载接下来的10个事件events# 让我们随机丢弃一些事件np.random.choice(events, len(events)//2)# 现在让我们尝试读取10毫秒的事件events = video.load_delta_t(10000)
等等…