18、Python 改变Labelme 标注数据的值

基本描述:改变JSON文件的的内容,之前的代码的改的,可以更简单一些,不喜勿喷~~

# -*- coding: utf-8 -*-
import os
import sys
import json
import io
import random
import re
from PIL import Image
 
 
source_path='./total'


 
 
article_info = {}
data_json = json.loads(json.dumps(article_info))
data_json['version']='3.6.16'
data_json['flags']={}
 
data_json["lineColor"]=[
    0,
    255,
    0,
    128
  ]
data_json["fillColor"]=[
    255,
    0,
    0,
    128
  ]
 
 
 
def file_name(file_dir):
    L = []
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            if os.path.splitext(file)[1] == '.json':
                L.append(os.path.join(root , file))
        return L
 
 
 
path_list =file_name(source_path)
for name in enumerate(path_list): 
        shape_json = []
        m_path =name[1]
        dir=os.path.dirname(m_path)
        file_json = io.open(m_path,'r',encoding='utf-8')
        json_data = file_json.read()
        data = json.loads(json_data)
        data_json['imageData']=None
        data_name= data['imagePath']
        data_path = dir+'/'+data_name
        
        object_name= os.path.splitext(data['imagePath'])[0]
        for i in  range(len(data['shapes'])):
                m_xmin_0=(data['shapes'][i]['points'][0][0]  if(data['shapes'][i]['points'][0][0]<data['shapes'][i]['points'][1][0]) else data['shapes'][i]['points'][1][0])
                m_ymin_0=(data['shapes'][i]['points'][0][1]  if(data['shapes'][i]['points'][0][1]<data['shapes'][i]['points'][1][1]) else data['shapes'][i]['points'][1][1])
                m_xmax_0=(data['shapes'][i]['points'][1][0]  if(data['shapes'][i]['points'][0][0]<data['shapes'][i]['points'][1][0]) else data['shapes'][i]['points'][0][0])
                m_ymax_0=(data['shapes'][i]['points'][1][1]  if(data['shapes'][i]['points'][0][1]<data['shapes'][i]['points'][1][1]) else data['shapes'][i]['points'][0][1])       
                m_name_0=data['shapes'][i]['label']
                data_json_line_color=data['shapes'][i]['line_color']
                data_json_fill_color=data['shapes'][i]['fill_color']
                data_json_rec=data['shapes'][i]['shape_type']
                data_json['imageWidth']=data['imageWidth']
                data_json['imageHeight']=data['imageHeight']
                (filename, extension) = os.path.splitext(data_name)
                data_new_json_name=source_path+"/"+filename+".json"
                data_json['imagePath']=filename+".jpg"
                if m_name_0 in ( 'ambiguous_hand'):
                   print (data_new_json_name)
                   print ('m_name_0=',m_name_0)
                   m_name_0="nothing_hand"
                 
                shape_json_item={"label": m_name_0,"line_color": data_json_line_color,"fill_color": data_json_fill_color,"points": [[min(m_xmin_0,m_xmax_0),min(m_ymin_0,m_ymax_0)], 
                [max(m_xmin_0,m_xmax_0),max(m_ymin_0,m_ymax_0)]],"shape_type": data_json_rec}
                shape_json.append(shape_json_item)
        data_json['shapes']=shape_json
        data_info = json.dumps(data_json, ensure_ascii=False)
        fp=open(data_new_json_name, "w+")
        json.dump(data_info,fp,ensure_ascii=False,indent =4)
        fp.close()
        fp=open(data_new_json_name, "r")  
        for x in fp.readlines():
            y=x.replace("\\\"","\"")
            z=y.replace("\"{","{")
            w=z.replace("}\"","}")  
            fp.close()
            fp=open(data_new_json_name, "w+")
            fp.write(w)
            fp.close()

猜你喜欢

转载自blog.csdn.net/sxj731533730/article/details/102698327
今日推荐