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,有些子目录下只有照片(因为照片没有可标注类型)
    在这里插入图片描述
    同时存在照片和标注文件的子目录:
    在这里插入图片描述

  2. 测试完的json文件新路径
    在这里插入图片描述

  3. 测试完的已标注图片的新路径
    在这里插入图片描述

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值