這幾天在調試camera,sensor 出圖懷疑有問題,請硬件同事用示波器抓去一些sensor端輸出的數據–Payload,由於示波器抓的mipi數據保存成csv表格,pyaload數據是字符串形式16進制數據,遂寫了python腳本將其轉換成2進制frame bin文件,分析圖像數據,話不多說,上代碼:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os, sys, getopt
import string
'''
Usage: phyon3 mipiPayload2frame.py -i <inputfile> -o <outputfile>
'''
def mipiPayload2frame(inputfile, outputfile):
str_f = open(inputfile, 'r')
c = str_f.readline()
str_f.close()
c.strip('\n')
c=c.replace(' ', '')
bytes_num = int(len(c)/2)
#print("bytes num: ", bytes_num)
#print(c)
tmp_list = []
i = 0
for i in range(0, bytes_num):
chs = c[2*i : 2*i + 2]
num = int(chs, 16)
tmp_list.append(num)
out_bytes = bytes(tmp_list) # convert list to bytes array
out_file = open(outputfile, "wb") # create outputfile
out_file.write(out_bytes)
out_file.close()
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print('Usage: '+ sys.argv[0] + ' -i <inputfile> -o <outputfile>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('Usage: '+ sys.argv[0] + ' -i <inputfile> -o <outputfile>')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print('inputfile : ', inputfile)
print('outputfile : ', outputfile)
mipiPayload2frame(inputfile, outputfile)
if __name__ == "__main__":
main(sys.argv[1:])
Ref:
https://blog.csdn.net/zhixiang8869/article/details/80492464
https://www.runoob.com/python/python-command-line-arguments.html