python脚本:将labelme标注后的json文件和对应的图片分别保存

1.说明

用labelme标注工具标注的时候,标注完一张照片点击保存,生成的json文件跟原始照片在一个文件夹。而且在标注的时候并不是每张照片都标注,在实际目标检测算法YOLO等)应用的时候需要将图片和标注文件分开,此脚本实现将多个文件下的原始照片和json文件分开保存

2.思想

标注文件跟原始照片同名,根据json文件的文件名去复制对应的图片(同一文件夹内有些照片未标注,所以不能根据标注图片文件名去复制标注文件)

3.代码

#python源码
import os
import shutil
fileSourcePath = input("请输入源路径(例如D:\\\\picture):")  #照片和json源文件路径
LabelmeImgNewPath = input("请输入已标注图片的新路径(例如D:\\\\picture):")  
jsonNewPath = input("请输入标注数据json文件的新路径(例如D:\\\\picture):")
filelist = os.listdir(fileSourcePath)  
j = 0
for filename in filelist:                                  #遍历子目录文件夹
    everyFilePath = fileSourcePath + "\\" + str(filename)  #每一个子目录的路径,两个反斜杠输出是一个斜杠,
    imgJsonList = os.listdir(everyFilePath)                    #子目录文件夹下,照片和json的列表
    #1.先复制json
    jsonList = []                                            #存取json文件名
    imgList = []                                             #存取照片文件名
    LabelmeImg = []                                          #存取标注的图片的名字
    for i in imgJsonList:
        if i.split(".")[1] == "json":
            jsonList.append(i)
        else:
            imgList.append(i)
    for jsonName in jsonList:
        jsonOldPath = everyFilePath + "\\" + str(jsonName)  # 子目录下的json路径
        shutil.copy(jsonOldPath, jsonNewPath)
    for imgName in imgList:
        if str(str(imgName.split(".")[0]) + ".json") in jsonList:  # 如果图片的名字加上后缀,在jsonList中能找到,则取出来
            LabelmeImg.append(imgName)
        for LabelmeImgName in LabelmeImg:
            LabelmeImgOldPath = everyFilePath + "\\" + LabelmeImgName
            shutil.copy(LabelmeImgOldPath, LabelmeImgNewPath)

    print("已经成功处理标注照片和标注数据的文件夹:" + str(filename))
    j += 1
print("已经成功复制子目录:" + str(j) + "个")

4.举例

  1. 原始路径
    有些子目录文件夹下有对应的照片和json,有些子目录下只有照片(因为照片没有可标注类型)
    python脚本:将labelme标注后的json文件和对应的图片分别保存_第1张图片
    同时存在照片和标注文件的子目录:
    python脚本:将labelme标注后的json文件和对应的图片分别保存_第2张图片

  2. 测试完的json文件新路径
    python脚本:将labelme标注后的json文件和对应的图片分别保存_第3张图片

  3. 测试完的已标注图片的新路径
    python脚本:将labelme标注后的json文件和对应的图片分别保存_第4张图片

你可能感兴趣的:(python脚本)