在完成智能车自主巡航任务时,我们需要采集车道线数据。即前向摄像头拍摄车道线图片,并与小车此时的转弯系数对应起来。车道线图片命名方式为 0.jpg、1.jpg、2.jpg··· 。图片对应的转弯系数则保存到.json文件中,文件内容为 {“0”: 0.jpg对应的转弯系数, “1”: 1.jpg对应的转弯系数, “2”: 2.jpg对应的转弯系数, ···}。为了能让不同时刻采集的数据拼接成一个数据集,我们需要对采集的图片序号及.json文件中键名序号进行批量修改,并生成.txt文件将图片与转弯系数对应起来。
一. 批量修改图片序号
假设我们有10张图片,保存在桌面的pic文件夹中:
我们想让它们的序号从0-9修改为10-19,则执行以下程序:
import os
path = 'C:/Users/Administrator/Desktop/pic'
filelist = os.listdir(path)
target_min = 10 #输入目标最小序号
current_min = 0 #输入当前最小序号
gap = target_min-current_min
error_list = []
for item in filelist:
if item.endswith('.jpg'):
name = str(int(item.split(".",3)[0]) + gap)
src = os.path.join(os.path.abspath(path),item)
dst = os.path.join(os.path.abspath(path),name + '.jpg')
try:
os.rename(src,dst)
print('rename from %s to %s'%(src,dst))
except:
error_list.append(item)
continue
for item in error_list:
if item.endswith('.jpg'):
name = str(int(item.split(".",3)[0]) + gap)
src = os.path.join(os.path.abspath(path),item)
dst = os.path.join(os.path.abspath(path),name + '.jpg')
try:
os.rename(src,dst)
print('rename from %s to %s'%(src,dst))
except:
error_list.append(item)
continue
二. 修改.json文件中的键名序号
假设我们10张图片对应了10个转弯系数(此处转弯系数值为虚构,真实值需实际采集):
我们想让它们的序号从0-9修改为10-19,则执行以下程序:
import json
new_json={}
target_min=10 #输入目标最小序号
current_min=0 #输入当前最小序号
with open("C:/Users/Administrator/Desktop/pic/result.json","r") as load_f:
load_dict = json.load(load_f)
for i in range(current_min,current_min+len(load_dict)):
new_json[str(target_min)]=load_dict[str(i)]
print("new_json{}=".format(str(target_min)),new_json[str(target_min)])
target_min+=1
with open("C:/Users/Administrator/Desktop/pic/target.json","w") as dump_f:
json.dump(new_json,dump_f)
三. 生成.txt文件
import json
FILE1 = 'result.json' #.json文件存储路径
NEW = 'd1.txt'#.txt文件存储路径
IMG_DIR = 'pic/' #图片存储路径
with open(NEW, 'w') as new:
with open(FILE1, 'r') as file1:
label_dict = json.load(file1)
length = len(label_dict)
idx = 0
for name, label in label_dict.items():
name = IMG_DIR + name + '.jpg'
new.write(name)
new.write('\t')
new.write(str(label))
if idx != length - 1:
new.write('\n')
idx += 1