在完成智能车自主巡航任务时,我们需要采集车道线数据。即前向摄像头拍摄车道线图片,并与小车此时的转弯系数对应起来。车道线图片命名方式为 0.jpg、1.jpg、2.jpg··· 。图片对应的转弯系数则保存到.json文件中,文件内容为 {“0”: 0.jpg对应的转弯系数, “1”: 1.jpg对应的转弯系数, “2”: 2.jpg对应的转弯系数, ···}。为了能让不同时刻采集的数据拼接成一个数据集,我们需要对采集的图片序号及.json文件中键名序号进行批量修改,并生成.txt文件将图片与转弯系数对应起来。

一. 批量修改图片序号假设我们有10张图片,保存在桌面的pic文件夹中:
在这里插入图片描述

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