簡單將xml資料轉換為txt資料

2021-10-10 04:25:02 字數 2463 閱讀 9428

import xml.etree.elementtree as et

import pickle

import os

from os import listdir, getcwd

from os.path import join

sets=

['train'

,'trainval'

]classes =

["mono"

]def

convert

(size, box)

: dw =1.

/size[0]

dh =1.

/size[1]

x =(box[0]

+ box[1]

)/2.0 y =

(box[2]

+ box[3]

)/2.0 w = box[1]

- box[0]

h = box[3]

- box[2]

x = x*dw

w = w*dw

y = y*dh

h = h*dh

return

(x,y,w,h)

defconvert_annotation

(image_id)

:# 轉換這一張的座標表示方式(格式),即讀取xml檔案的內容,計算後存放在txt檔案中。

in_file =

open

('annotation/%s'

% image_id)

image_id=image_id.split(

'.')[0

] out_file =

open

('labels/%s.txt'

%image_id,

'w')

tree=et.parse(in_file)

root = tree.getroot(

) size = root.find(

'size'

) w =

int(size.find(

'width'

).text)

h =int(size.find(

'height'

).text)

for obj in root.

iter

('object'):

difficult = obj.find(

'difficult'

).text

cls = obj.find(

'name'

).text

if cls not

in classes or

int(difficult)==1

:continue

cls_id = classes.index(cls)

xmlbox = obj.find(

'bndbox'

) b =

(float

(xmlbox.find(

'xmin'

).text)

,float

(xmlbox.find(

'xmax'

).text)

,float

(xmlbox.find(

'ymin'

).text)

,float

(xmlbox.find(

'ymax'

).text)

) bb = convert(

(w,h)

, b)

out_file.write(

str(cls_id)

+" "

+" "

.join(

[str

(a)for a in bb])+

'\n'

)for image_set in sets:

ifnot os.path.exists(

'labels/'):

os.makedirs(

'labels/'

)# 新建乙個 label 資料夾,用於存放yolo格式的標籤檔案:000001.txt

image_ids =

open

('%s.txt'

% image_set)

.read(

).strip(

).split(

)for image_id in image_ids:

image_id=image_id.split(

'/')[-

1]image_id=image_id.split(

'.')[0

] image_id=image_id+

".xml"

convert_annotation(image_id)

# 轉換這一張的座標表示方式(格式)

SqlServer將查詢結果轉換為XML和JSON

1.查詢結果轉xml declare parametersql nvarchar max select from table declare sql nvarchar max declare xmlstring varchar max declare xml xml declare paramlis...

Eprime的txt資料轉換為excel

總結完整 如下 示例 import os import pandas as pd 如下 示例 path c users chengsi desktop sj encoding exp program 第二次後測 eprime儲存資料的資料夾 txt ls 提取.txt字尾的檔案 for root,d...

將A B轉換為指定進製數

進製轉換是典型的棧的應用,特別是用陣列實現的順序棧就更簡單了,隨便ac了乙個九度的題目,記錄一下吧 輸入兩個不超過整型定義的非負10進製整數a和b 231 1 輸出a b的m 1 m 10 進製數。輸入格式 測試輸入包含若干測試用例。每個測試用例佔一行,給出m和a,b的值。當m為0時輸入結束。輸出格...