将aedat4文件转化为csv文件
结合了一下网上找的各种教程。自己又调整了一下。
读取aedat4文件主要参考:aedat4tomat.py 文件,https://github.com/bald6354/aedat4tomat
其中dv库用于处理aedat4数据,将其读取出来存储为csv文件。
存储csv文件主要参考:https://blog.csdn.net/waple_0820/article/details/70049953
处理代码如下:
#!/usr/bin/python
# """
# data = {'e_p': e_p,
# 'e_ts': e_ts,
# 'e_x': e_x,
# 'e_y': e_y,
# 'f_image': f_image,
# 'f_position': f_position,
# 'f_size': f_size,
# 'f_ts': f_ts,
# 'f_framestart': f_framestart,
# 'f_frameend': f_frameend,
# 'f_expstart': f_expstart,
# 'f_expend': f_expend,
# 'i_ax': i_ax,
# 'i_ay': i_ay,
# 'i_az': i_az,
# 'i_gx': i_gx,
# 'i_gy': i_gy,
# 'i_gz': i_gz,
# 'i_mx': i_mx,
# 'i_my': i_my,
# 'i_mz': i_mz,
# 'i_temp': i_temp,
# 'i_ts': i_ts
# }
# """
import sys, getopt, os
from dv import AedatFile
import scipy.io as sio
import numpy as np
import pandas as pd
class Struct:
pass
def main(argv):
#aedat文件路径及转化为csv文件的路径
filename_in = '/root/autodl-tmp/data/1/'
#filename_out = '/root/autodl-tmp/1/'
#filelist里是所有文件的名字,存为file列表
file = []
filelist = os.listdir(filename_in)
for file in filelist:
file_path = os.path.join(filename_in,file)
#将文件名和文件类型可区分开,便于存储新类型文件
file_name = os.path.splitext(file)[0]
file_type = os.path.splitext(file)[1]
print(file_path)
print("1111111111111111111111111111")
print(file_name)
#file.append(i)
#print(len(file))
#aedat_name = "dvSave-2022_11_08_21_22_23.aedat4"
# print('Input file path is :', filename_in)
# print('Output file path is :', filename_out)
#for i in len(file):
#Define output struct
out = Struct()
out.data = Struct()
out.data.polarity = Struct()
#Events初始化事件信息list
out.data.polarity.polarity = []
out.data.polarity.timeStamp = []
out.data.polarity.x = []
out.data.polarity.y = []
data = {'aedat': out}
with AedatFile(file_path) as f:
# loop through the "events" stream
for e in f['events']:
out.data.polarity.timeStamp.append(e.timestamp/10e15)
out.data.polarity.polarity.append(int(e.polarity))
out.data.polarity.x.append(e.x)
out.data.polarity.y.append(e.y)
#字典中的key值即为csv中列名
dataevent = pd.DataFrame({'x':out.data.polarity.x,'y':out.data.polarity.y,'p':out.data.polarity.polarity,'t':out.data.polarity.timeStamp})
#将DataFrame存储为csv,index表示是否显示行名,default=True
path_out = '/root/autodl-tmp/1/'
if not os.path.exists(path_out):#如果路径不存在
os.makedirs(path_out)
outfo = os.path.join(path_out,file_name)
dataevent.to_csv(outfo + '.csv',index=False,sep=',')
if __name__ == "__main__":
main(sys.argv[1:])