#!
/usr/bin/python
# -*
- coding: utf-8-
*-import xml.etree.elementtree as
etimport os
lbael_root
="e:/python_workspace/other_code/xml檔案解析/"
def process_xml
(src_path,dataset)
:"""
載入xml檔案
解析原始檔,獲取
<
/filename>影象名稱,以及標註框的上
<
/xmin>和左
<
/ymin>的座標,並將右下方的座標轉換成寬度和高度
將以上資料構建成
/dataset>的結構
如此,將'*.jpg'
>
'' left=
'' width=
'' height=''/
>
<
/image>資訊從每張影象的.
xml檔案中提取出來新增到乙個.
xml檔案中,並寫入磁碟即可
"""# 讀取源xml檔案
et =et.
parse
(src_path)
# 獲取第乙個標籤為"filename"的「直接」subelement
filename = et.
find
("filename"
) picname = filename.text
#******
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
** #dataset =et.
parse
(dataset0)
images = dataset.
find
("images"
) image =et.
element
("image"
, file=picname)
images.
(image)
#******
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
** # #獲取所有標籤為"object"的「直接」 subelement
for e in et.
findall
("object"):
name01 = e.
find
("name"
) bndbox = e.
find
("bndbox"
) xmin = bndbox.
find
("xmin"
) ymin = bndbox.
find
("ymin"
) xmax = bndbox.
find
("xmax"
) ymax = bndbox.
find
("ymax"
) #下面五行測試用
#print
("*****************************************"
) #print
("xmin:"
+xmin.text)
#print
("xmax:"
+xmax.text)
#print
("ymin:"
+ymin.text)
#print
("ymax:"
+ymax.text)
width =
str(
int(xmax.text)
-int
(xmin.text)
) height =
str(
int(ymax.text)
-int
(ymin.text)
) #下面五行測試用
#print
("*****************************************"
) #print
("top:"
+ymin.text)
#print
("left:"
+xmin.text)
#print
("width:"
+width)
#print
("height:"
+height)
box =et.
element
("box"
,top=ymin.text,left=xmin.text,width=width,height=height)
#下面兩學習和行測試用
print
("**************顯示box.items()語句的作用*******************"
)print
(box.
items()
) label =et.
subelement
(box,
"label"
) label.text = name01.text
image.
(box)
if __name__ ==
"__main__"
: # 建立root element
dataset =et.
element
("dataset"
) # 直接通過subelement類為root element新增多個子元素
name =et.
subelement
(dataset,
"name"
) name.text =
"imglabdataset"
images0=et.
subelement
(dataset,
"images"
) # 以指定的root element建立乙個elementtree例項
datasettree=et.
elementtree
(element=dataset)
raw_path =
lbael_root
+"mobilenetssdxml2dlibxml/"
+"oldannotations/"
dst_path =
lbael_root
+"mobilenetssdxml2dlibxml/"
+"newannotations/"
if not os.path.
exists
(dst_path)
:print
("create a new dir: "
+ dst_path)
os.mkdir
(dst_path)
for xml_filename in os.
listdir
(raw_path)
:process_xml
(raw_path + xml_filename,datasettree)
#以指定的root element建立乙個elementtree例項
#tree =et.
elementtree
(element=datasettree)
for e in datasettree.
iter()
: #下面兩行學習和測試用
print
("**************顯示et.tostring()語句的作用*******************"
)print(et
.tostring
(e))
datasettree.
write
(dst_path+
"test_picture.xml"
,encoding=
"utf-8"
,xml_declaration=true)
py檔案轉換成exe格式
本人寫好的py再給別人使用的時候,往往都需要再在別人的電腦上配置一遍環境,感覺超級麻煩,所以找到了pyinstaller這個工具,可以幫助我直接生成exe檔案,當然也幫我做好了庫環境的包含工作,簡單方便,在此記錄。pip install pyinstaller在命令列中進入所需打包的目錄 打包指令 ...
dos檔案轉換成unix檔案格式
dos檔案轉換成unix檔案格式 摘自 ahsunlong的部落格 dos格式檔案傳輸到unix系統時,會在每行的結尾多乙個 m,當然也有可能看不到,但是在vi的時候,會在下面顯示此檔案的格式,比如 dos.txt dos 120l,2532c 字樣,表示是乙個 dos 格式檔案,如果是mac系統的...
mat格式轉換成csv格式
最近發現了乙個超好的工具 也可以說是 值得推廣 能夠吧mat格式批量轉變成csv格式 超讚 網上的大部分都不是特別好,很多 都不能很好的執行,現在有個python版本的,分享給大家 coding utf 8 import scipy.io as sio import pandas as pd imp...