好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > python之json文件轉xml文件案例講解

python之json文件轉xml文件案例講解

熱門標簽:電梯新時達系統外呼顯示e 南昌地圖標注 地圖標注與注銷 無錫智能外呼系統好用嗎 百應電話機器人總部 西青語音電銷機器人哪家好 旅游廁所地圖標注怎么弄 宿州電話機器人哪家好 成都呼叫中心外呼系統哪家強

json文件格式

這是yolov4模型跑出來的檢測結果result.json

下面是截取的一張圖的檢測結果

{
 "frame_id":1, #圖片的序號
 "filename":"/media/wuzhou/Gap/rgb-piglet/test/00000000.jpg", #圖片的路徑
 "objects": [ #該圖中所有的目標:目標類別、目標名稱、歸一化的框的坐標(xywh格式)、置信度
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.750913, "center_y":0.402691, "width":0.038380, "height":0.193304}, "confidence":0.995435}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.764775, "center_y":0.199255, "width":0.049979, "height":0.130169}, "confidence":0.994495}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.560050, "center_y":0.482614, "width":0.036331, "height":0.166377}, "confidence":0.994460}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.710756, "center_y":0.406446, "width":0.041782, "height":0.191297}, "confidence":0.993540}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.638335, "center_y":0.238725, "width":0.107689, "height":0.092282}, "confidence":0.992926}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.780232, "center_y":0.448454, "width":0.041550, "height":0.179540}, "confidence":0.990020}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.563412, "center_y":0.350035, "width":0.103184, "height":0.059460}, "confidence":0.979756}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.522591, "center_y":0.195170, "width":0.083014, "height":0.071478}, "confidence":0.970642}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.658721, "center_y":0.154640, "width":0.103852, "height":0.055686}, "confidence":0.967082}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.537660, "center_y":0.256810, "width":0.101619, "height":0.095211}, "confidence":0.918135}, 
  {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.528618, "center_y":0.481005, "width":0.033226, "height":0.177723}, "confidence":0.310291}
 ] 
}, 

完整代碼

代碼需要指定圖片的路徑,例如 file_dir = "H:/rgb-piglet/five/test"
注意:result.json文件要跟圖片放一起

代碼生成的xml與圖片在同一個路徑下

import json
import time
import os
from PIL import Image
import cv2
import numpy as np

'''人為構造xml文件的格式'''
out0 ='''annotation>
    folder>%(folder)s/folder>
    filename>%(name)s/filename>
    path>%(path)s/path>
    source>
        database>None/database>
    /source>
    size>
        width>%(width)d/width>
        height>%(height)d/height>
        depth>3/depth>
    /size>
    segmented>0/segmented>
'''
out1 = '''    object>
        name>%(class)s/name>
        pose>Unspecified/pose>
        truncated>0/truncated>
        difficult>0/difficult>
        bndbox>
            xmin>%(xmin)d/xmin>
            ymin>%(ymin)d/ymin>
            xmax>%(xmax)d/xmax>
            ymax>%(ymax)d/ymax>
        /bndbox>
    /object>
'''

out2 = '''/annotation>
'''

def read_json(json_dir):
    with open(json_dir,"r") as f:
        data = json.load(f)
        print(type(data),len(data),type(data[0]),data[0]['frame_id'])
    return data


'''txt轉xml函數'''
def translate(fdir,lists): 
    source = {}
    label = {}
    data = read_json(fdir+"/result.json")
    k = 0
    for jpg in lists:
        print(jpg)
        if jpg[-4:] == '.jpg':
            image= cv2.imread(jpg)#路徑不能有中文
            h,w,_ = image.shape #圖片大小
            
            fxml = jpg.replace('.jpg','.xml')
            fxml = open(fxml, 'w');
            imgfile = jpg.split('/')[-1]
            source['name'] = imgfile 
            source['path'] = jpg
            source['folder'] = os.path.basename(fdir)

            source['width'] = w
            source['height'] = h
            
            fxml.write(out0 % source)
                       
            for obj in data[k]["objects"]:
                label['class'] = obj["class_id"]
                box = obj["relative_coordinates"]
                
                '''把txt上的數字(歸一化)轉成xml上框的坐標'''
                xmin = float(box["center_x"] - 0.5*box["width"])*w
                ymin = float(box["center_y"] - 0.5*box["height"])*h
                xmax = float(xmin + box["width"]*w)
                ymax = float(ymin + box["height"]*h)
                
                label['xmin'] = xmin
                label['ymin'] = ymin
                label['xmax'] = xmax
                label['ymax'] = ymax
                    
                fxml.write(out1 % label)
                
            k = k+1
            fxml.write(out2)

if __name__ == '__main__':
    file_dir = "H:/rgb-piglet/five/test"
    lists=[]
    for i in os.listdir(file_dir):
        if i[-3:]=='jpg':
            lists.append(file_dir+'/'+i)       
    #print(lists)
    translate(file_dir,lists)
    print('---------------Done!!!--------------')            
                

到此這篇關于python之json文件轉xml文件案例講解的文章就介紹到這了,更多相關python之json文件轉xml內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python中rapidjson參數校驗實現
  • Python常用配置文件ini、json、yaml讀寫總結
  • Python中json.load()和json.loads()有哪些區別
  • Python中json.dumps()函數的使用解析
  • python 存儲json數據的操作
  • 解決python3 json數據包含中文的讀寫問題
  • python json.dumps中文亂碼問題解決
  • Python如何把不同類型數據的json序列化

標簽:濰坊 許昌 七臺河 西安 贛州 辛集 雅安 渭南

巨人網絡通訊聲明:本文標題《python之json文件轉xml文件案例講解》,本文關鍵詞  python,之,json,文件,轉,xml,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python之json文件轉xml文件案例講解》相關的同類信息!
  • 本頁收集關于python之json文件轉xml文件案例講解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产真实乱子伦精品视手机观看| 欧美金妇乱妇熟妇XXXX生| www在线观看| 亚洲国产成人久久一区久久| 国精产品一线二线三线电影| 巜她在丈夫面前被耍了| 一个吃b两个吃| 又大又粗又硬起来了| 女教师大荫蒂毛茸茸视频| 5g影视天天5g天天爽高清在线观看 | MJ国产精品视频一区二区| 亚洲午夜无码久久久| 羞网站| 欧美xxxx69tube8护士| 一二三区在线观看| 亚洲色欲色欲www在线成人网| 性生潮久久久不久久久久| 调教奴性同桌h| 2022麻豆剧果冻传媒| 性videostv另类极品| 亚洲成在线观看AV第28集| 国产尻逼| 早安三国打工人| 果冻制作传媒免费版| 性中国妇女熟女XXXX毛多| 91精品丝袜黑色高跟鞋| 异界破落小领主| 高清性色生活片在线观看| 国产高清一级A片免费看少妃| 精品久久久免费| 在线|国产传媒18精品免费1区2特色| 国内精品视频一区二区三区| 手机免费毛片| 用舌头去添下面的视频| 蜜臀色欲AV在线播放国产日韩| 阿姨性教育| 又湿又滑的粉嫩18p国产| 高h女骚乱绿帽公| 女人做a爰片久久毛片A片免费| 亚洲AV天堂无码男在线观看| 侠女h文|