首先感謝博主: insomnia620
1.xml檔案是用labelimage工具標註的
在darknet-master/scripts/資料夾下,有voc_label.py檔案,是針對voc資料集生成標籤txt檔案的,這裡把這個檔案修改下,用來生成自己資料集的標籤txt檔案。
修改後的voc_label.py檔案如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import xml.etree.elementtree as et
import pickle
import os
from os import listdir, getcwd
from os.path import join
#classes = ["aeroplane", "bicycle", "bird", "boat", "bottle"]
classes =
["smoke"
]#(改!)自己要測的目標類別
defconvert
(size, box)
: dw =1.
/(size[0]
) dh =1.
/(size[1]
) x =
(box[0]
+ box[1]
)/2.0-
1 y =
(box[2]
+ box[3]
)/2.0-
1 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)
: in_file =
open
('/root/darknet-master/data/annotations/%s.xml'
%(image_id)
)#(改!)自己的影象標籤xml檔案的路徑
out_file =
open
('/root/darknet-master/data/obj/%s.txt'
%(image_id)
,'w'
)#(改!)自己的影象標籤txt檔案要儲存的路徑
tree=et.parse(in_file)
#直接解析xml檔案
root = tree.getroot(
)#獲取xml檔案的根節點
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#xml裡的difficult引數
cls = obj.find(
'name'
).text#要檢測的類別名稱name
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'
)#用voc資料集的話,是將vocdevkit/voc2007/imagesets/main/資料夾下的所有txt都迴圈讀入了
#這裡我唯讀入所有待訓練影象的路徑list.txt
image_paths =
open
('/root/darknet-master/data/obj/list.txt'
).read(
).strip(
).split(
)#(改!)
]#image_id內容類似'0001.jpg'
image_id2=os.path.splitext(image_id)[0
]#image_id2內容類似'0001'
convert_annotation(image_id2)
DOM方式解析XML配置檔案,將資料儲存成陣列
header content type text html charset utf 8 doc new domdocument 1.0 utf 8 doc load config.xml 第一步獲得documentelement跟元素 config doc documentelement 獲得根節點...
C 建立XML檔案並儲存
隨著xml的普及以及在動態web應用程式中大量應用,如何通過.net建立,刪除,修改xml檔案變的也來也重要了。乙個簡單的概念是,xml檔案跟大的文字檔案並沒有什麼區別,同時它是先於.net出現,很多asp的開發者,當他需要程式輸出xml檔案的時候,通常都是用response.write 方法輸出為...
怎麼將資料儲存成XML格式的例子
protected string strxmlfile protected xmldocument objxmldoc new xmldocument public xmlcontrol string xmlfile catch system.exception ex strxmlfile xmlf...