1、如下为.dat文件中文件头的基本格式: MagicNumber Format StartingAddress PageNum Length [NewFormat]
下面是分别的解释: MagicNumber:1651. Format:a number from 1 to 4, indicating the format of the samples in the file. This number represents a data format: (1) - hexadecimal,
(2) - integer
(3) - long
(4) - float
(9) - Use new scheme
StartingAddress:starting address of the block that was saved. PageNum:page number the block was taken from. Length:number of samples in the block. NewFormat:Format (9); the new scheme. This is optional when usign the legacy formats 1 - 4 如下例子中的数据: 1 1651 2 8cc0 0 1a70c
2 79
3 74
4 74
5 67
6 ...
7 ...
第一行的数据为:1651 2 8cc0 0 1a70c 1651标志着这是TI的.dat文件的格式。 2表示了这个文件中的数据是整数格式的,比如第二行的数据79是interger的格式。 8cc0表示这段数据Load Memory到CCS软件的过程中,是加载到0x8cc0对应的地址上的。 0表示这段数据将加载到page0的位置上。 1a70c表示这段数据的总长度为0x1a70c(Hex) = 108300(Decimal) 2、创建图像对应的.dat文件: 如下的图片,转换为190*190大小的图片,并生成对应的.dat文件.
Code(文件名称:_dat_create.py): 1 import cv2
2 import glob
3 Path = glob.glob('*.jpg')
4 count = 0
5 for Pic in Path:
6 I = cv2.imread(Pic)
7 res = cv2.resize(I,(190,190),interpolation=cv2.INTER_CUBIC)
8 Name = "Test" + str(count)
9 cv2.imwrite(Name + ".png",res)
10 fid = open(Name + ".dat",'w')
11 fid.write('1651 2 8cc0 0 1a70c'+'\n')
12 width,height = res.shape[:2]
13 for channel in range(3):
14 for row in range(height):
15 for col in range(width):
16 fid.write(str(res[row][col][channel])+'\n')
17 count += 1
将上述代码以及要处理的图片拷贝到同一个目录下,双击运行python脚本文件即可生成:
我们可以通过修改代码中的190*190的图像尺寸来生成不同的图像数据,并生成对应的.dat文件。 3、创建音频对应的.dat文件: 如下链接中的单音音源sin.wav,生成对应的.dat文件. https://files.cnblogs.com/files/uestc-mm/sin.7z Code(文件名Audio2Dat.py): 1 from scipy.io.wavfile import write, read
2 import numpy as np
3 import math
4 import glob
5 import sys
6 import os
7
8 INT16_FAC = (2**15)-1
9 INT32_FAC = (2**31)-1
10 INT64_FAC = (2**63)-1
11 norm_fact = {'int16':INT16_FAC, 'int32':INT32_FAC, 'int64':INT64_FAC,'float32':1.0,'float64':1.0}
12
13 def wavread(filename):
14 """
15 Read a sound file and convert it to a normalized floating point array
16 filename: name of file to read
17 returns fs: sampling rate of file, x: floating point array
18 """
19 if (os.path.isfile(filename) == False): # raise error if wrong input file
20 print("Input file does not exist. Make sure you computed the analysis/synthesis")
21
22 fs, x = read(filename)
23
24 if (len(x.shape) !=1): # raise error if more than one channel
25 raise ValueError("Audio file should be mono")
26
27 if (fs !=44100): # raise error if more than one channel
28 raise ValueError("Sampling rate of input sound should be 44100")
29
30 #scale down and convert audio into floating point number in range of -1 to 1
31 x = np.float32(x)/norm_fact[x.dtype.name]
32 return fs, x
33
34 path = glob.glob('*.wav')
35 count = 1
36 for p in path:
37 fs, dat = wavread(str(p))
38
39 fid = open(str(count)+'.dat','w')
40 # flie·Magic=1651 X=9 data·StartAddress=0x80000000 X=0 data·Number(Hex)=0x7a120 X=5
41 fid.write('1651 9 80000000 0 7a120 5'+'\n')
42 for i in dat:
43 fid.write(str(i)+'\n')
44 fid.close()
45 count += 1
将上述代码以及要处理的图片拷贝到同一个目录下,双击运行python脚本文件即可生成.dat文件:
结果如下: 1 1651 9 80000000 0 7a120 5
2 0.0
3 0.05011866
4 0.10004042
5 0.14956915
6 0.19851027
7 ...
8 ...
|