在完成智能车自主巡航任务时,我们需要采集车道线数据。即前向摄像头拍摄车道线图片,并与小车此时的转弯系数对应起来。车道线图片命名方式为 0.jpg、1.jpg、2.jpg··· 。图片对应的转弯系数则保存到.json文件中,文件内容为 {“0”: 0.jpg对应的转弯系数, “1”: 1.jpg对应的转弯系数, “2”: 2.jpg对应的转弯系数, ···}。为了能让不同时刻采集的数据拼接成一个数据集,我们需要对采集的图片序号及.json文件中键名序号进行批量修改,并生成.txt文件将图片与转弯系数对应起来。
一. 批量修改图片序号
假设我们有10张图片,保存在桌面的pic文件夹中: ![在这里插入图片描述](https://img-blog.csdnimg.cn/ee14ba4318dc41f48ce963e520c1e112.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Y2h5Y2h5Y2X5a6J,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 我们想让它们的序号从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
![在这里插入图片描述](https://img-blog.csdnimg.cn/645586c4fb934ef48bd82f31099e3d4b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Y2h5Y2h5Y2X5a6J,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
二. 修改.json文件中的键名序号
假设我们10张图片对应了10个转弯系数(此处转弯系数值为虚构,真实值需实际采集): ![在这里插入图片描述](https://img-blog.csdnimg.cn/15822cf2a2504760be6950eedb7431ed.png#pic_center) 我们想让它们的序号从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)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b3ec6de156c841ebb065b7bfb2ca877c.png#pic_center)
三. 生成.txt文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/036b93128f4a4697b90a91d7bdf47e1d.png#pic_center)
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
|