VOC格式標籤檔案轉換成Dlib格式標籤檔案

2021-10-23 02:43:15 字數 4758 閱讀 4347

#!

/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...