批量修改json文件重命名后路径imagPath

问题json文件转为coco数据集时,coco数据集出错,coco数据集中的文件信息与原图不符。

原因:查看生成的instances_val2014.json文件后发现,文件名的路径还是json重命名之前的路径,所以导致原图与json信息无法匹配。

如下图:json文件名与文件中imagepath不一样。                                               

因此需要将imagepath 改成json现在的文件名。具体代码如下:

import json
import os, sys
json_path= '/home/f405/桌面/my_data/train/json/'
def get_json_data(json_path):
    with open(json_path,'rb')as f:
        params= json.load(f)

# 加载json文件中的内容给params

        a= filename[:-5]
        params['imagePath']= a+".jpg" #这两行控制修改的内容 时间有限就写的很草率

        dict= params

# 将修改后的内容保存在dict中

        f.close()

# 关闭json读模式

        return dict

# 返回dict字典内容

def write_json_data(dict):

# 写入json文件

    with open(json_path1,'w')as r:


# 定义为写模式,名称定义为r

        json.dump(dict, r,indent = 2)  #indent控制间隔

# 将dict写入名称为r的文件中

        r.close()

# 关闭json写模式

#获取文件夹中的文件名称列表

filenames=os.listdir(json_path)

#遍历文件名

for filename in filenames:
    filepath = json_path+'/'+filename

# print(filepath)

    dict= {}

    the_revised_dict= get_json_data(filepath)

    json_path1= '/home/f405/桌面/3/'+filename     # 修改json文件后保存的路径

    write_json_data(the_revised_dict)

 附带json转coco数据集代码:

# -*- coding:utf-8 -*-
# !/usr/bin/env python

import json
from labelme import utils
import numpy as np
import glob
import PIL.Image
labels={'cell1':4,'cell2':2,'cell3':3,'cell4':5,'cell5':1}
class MyEncoder(json.JSONEncoder):
    def default(self, obj):

        if isinstance(obj, np.integer):
            return int(obj)
        elif isinstance(obj, np.floating):
            return float(obj)
        elif isinstance(obj, np.ndarray):
            return obj.tolist()
        else:
            return super(MyEncoder, self).default(obj)


class labelme2coco(object):
    def __init__(self, labelme_json=[], save_json_path='./tran.json'):
        self.labelme_json = labelme_json
        self.save_json_path = save_json_path
        self.images = []
        self.catego
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值