五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

python之json文件轉(zhuǎn)xml文件案例講解

發(fā)布日期:2022-02-19 09:14 | 文章來源:gibhub

json文件格式

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

下面是截取的一張圖的檢測結(jié)果

{
 "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
'''人為構(gòu)造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轉(zhuǎn)xml函數(shù)'''
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上的數(shù)字(歸一化)轉(zhuǎn)成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!!!--------------')
 

到此這篇關(guān)于python之json文件轉(zhuǎn)xml文件案例講解的文章就介紹到這了,更多相關(guān)python之json文件轉(zhuǎn)xml內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

國外穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部