最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)xml格式轉(zhuǎn)txt格式的示例代碼

 更新時(shí)間:2022年03月29日 14:40:20   作者:l。Ve  
VOC 的標(biāo)注是xml格式的,而YOLO是.txt格式,所以要實(shí)現(xiàn)VOC數(shù)據(jù)集轉(zhuǎn)YOLO數(shù)據(jù)集,只能利用代碼實(shí)現(xiàn)。所以本文為大家介紹了Python中xml轉(zhuǎn)txt的示例代碼,需要的可以參考一下

1、前言

最近學(xué)習(xí)Yolo v5是遇見了個(gè)問題,找的數(shù)據(jù)集全是xml文件,VOC 的標(biāo)注是 xml 格式的,而YOLO是.txt格式,那么問題就來了,手動(dòng)提取肯定是不可能的,那只能借用程序解決咯。

2、分析xml、txt數(shù)據(jù)

這是xml樹形結(jié)構(gòu)

這是txt格式

總結(jié):

1.提取object->name、bndbox->xmin,ymin,xmax,ymin

2.格式轉(zhuǎn)化需要用公式轉(zhuǎn)換

YOLO數(shù)據(jù)集txt格式:

x_center :歸一化后的中心點(diǎn)x坐標(biāo)

y_center : 歸一化后的中心點(diǎn)y坐標(biāo)

w:歸一化后的目標(biāo)框?qū)挾?/p>

h: 歸一化后的目標(biāo)況高度

(此處歸一化指的是除以圖片寬和高)

VOC數(shù)據(jù)集xml格式

yolo的四個(gè)數(shù)據(jù)xml->txt公式
x_center((x_min+x_max)/2-1)/w_image
y_center((y_min+y_max)/2-1)/h_image
w(x_max-x_min)/w_image
h(y_max-y_min)/h_image

3、轉(zhuǎn)換過程

定義兩個(gè)文件夾,train放xml數(shù)據(jù), labels放txt數(shù)據(jù)。

代碼解析:

import os
import xml.etree.ElementTree as ET
import io
find_path = './train/' ? ?#xml所在的文件
savepath='./labels/' ? #保存文件

class Voc_Yolo(object):
? ? def __init__(self, find_path):
? ? ? ? self.find_path = find_path
? ? def Make_txt(self, outfile):
? ? ? ? out = open(outfile,'w')?
? ? ? ? print("創(chuàng)建成功:{}".format(outfile))
? ? ? ? return out
? ? def Work(self, count):
? ? #找到文件路徑
? ? ? ? for root, dirs, files in os.walk(self.find_path):
? ? ? ? #找到文件目錄中每一個(gè)xml文件
? ? ? ? ? ? for file in files:
? ? ? ? ? ? #記錄處理過的文件
? ? ? ? ? ? ? ? count += 1
? ? ? ? ? ? ? ? #輸入、輸出文件定義
? ? ? ? ? ? ? ? input_file = find_path + file
? ? ? ? ? ? ? ? outfile = savepath+file[:-4]+'.txt'
? ? ? ? ? ? ? ? #新建txt文件,確保文件正常保存
? ? ? ? ? ? ? ? out = self.Make_txt(outfile)
? ? ? ? ? ? ? ? #分析xml樹,取出w_image、h_image
? ? ? ? ? ? ? ? tree=ET.parse(input_file)
? ? ? ? ? ? ? ? root=tree.getroot()
? ? ? ? ? ? ? ? size=root.find('size')
? ? ? ? ? ? ? ? w_image=float(size.find('width').text)
? ? ? ? ? ? ? ? h_image=float(size.find('height').text)
? ? ? ? ? ? ? ? #繼續(xù)提取有效信息來計(jì)算txt中的四個(gè)數(shù)據(jù)
? ? ? ? ? ? ? ? for obj in root.iter('object'):
? ? ? ? ? ? ? ? #將類型提取出來,不同目標(biāo)類型不同,本文僅有一個(gè)類別->0
? ? ? ? ? ? ? ? ? ? classname=obj.find('name').text
? ? ? ? ? ? ? ? ? ? cls_id = classname
? ? ? ? ? ? ? ? ? ? xmlbox=obj.find('bndbox')
? ? ? ? ? ? ? ? ? ? x_min=float(xmlbox.find('xmin').text)
? ? ? ? ? ? ? ? ? ? x_max=float(xmlbox.find('xmax').text)
? ? ? ? ? ? ? ? ? ? y_min=float(xmlbox.find('ymin').text)
? ? ? ? ? ? ? ? ? ? y_max=float(xmlbox.find('ymax').text)
? ? ? ? ? ? ? ? ? ? #計(jì)算公式
? ? ? ? ? ? ? ? ? ? x_center=((x_min+x_max)/2-1)/w_image
? ? ? ? ? ? ? ? ? ? y_center=((y_min+y_max)/2-1)/h_image
? ? ? ? ? ? ? ? ? ? w=(x_max-x_min)/w_image
? ? ? ? ? ? ? ? ? ? h=(y_max-y_min)/h_image
? ? ? ? ? ? ? ? ? ? #文件寫入
? ? ? ? ? ? ? ? ? ? out.write(str(cls_id)+" "+str(x_center)+" "+str(y_center)+" "+str(w)+" "+str(h)+'\n')
? ? ? ? ? ? ? ? out.close()
? ? ? ? return count
if __name__ == "__main__":
? ? data = Voc_Yolo(find_path)
? ? number = data.Work(0)
? ? print(number)

4、最后結(jié)果對(duì)比

創(chuàng)建成功

與真實(shí)數(shù)據(jù)對(duì)比誤差很小

到此這篇關(guān)于Python實(shí)現(xiàn)xml格式轉(zhuǎn)txt格式的示例代碼的文章就介紹到這了,更多相關(guān)Python xml轉(zhuǎn)txt內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

  • python3 tkinter實(shí)現(xiàn)點(diǎn)擊一個(gè)按鈕跳出另一個(gè)窗口的方法

    python3 tkinter實(shí)現(xiàn)點(diǎn)擊一個(gè)按鈕跳出另一個(gè)窗口的方法

    今天小編就為大家分享一篇python3 tkinter實(shí)現(xiàn)點(diǎn)擊一個(gè)按鈕跳出另一個(gè)窗口的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python?對(duì)excel交互工具的使用詳情

    python?對(duì)excel交互工具的使用詳情

    這篇文章主要介紹了python?對(duì)excel交互工具的使用詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • python中的線程池threadpool

    python中的線程池threadpool

    這篇文章主要介紹了python中的線程池threadpool問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python微信跳一跳系列之自動(dòng)計(jì)算跳一跳距離

    python微信跳一跳系列之自動(dòng)計(jì)算跳一跳距離

    這篇文章主要為大家詳細(xì)介紹了python微信跳一跳系列之自動(dòng)計(jì)算跳一跳距離,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python英語單詞測(cè)試小程序代碼實(shí)例

    python英語單詞測(cè)試小程序代碼實(shí)例

    這篇文章主要介紹了python英語單詞測(cè)試小程序代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 淺談python的elementtree模塊處理中文注意事項(xiàng)

    淺談python的elementtree模塊處理中文注意事項(xiàng)

    這篇文章主要介紹了淺談python的elementtree模塊處理中文注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python異常學(xué)習(xí)筆記

    Python異常學(xué)習(xí)筆記

    這篇文章主要介紹了Python異常學(xué)習(xí)筆記,本文著重講解了如何自定義一個(gè)異常,需要的朋友可以參考下
    2015-02-02
  • Python ValueError: invalid literal for int() with base 10 實(shí)用解決方法

    Python ValueError: invalid literal for int() with base 10 實(shí)用

    這篇文章主要介紹了Python ValueError: invalid literal for int() with base 10 實(shí)用解決方法,本文使用了一個(gè)取巧方法解決了這個(gè)問題,需要的朋友可以參考下
    2015-06-06
  • python統(tǒng)計(jì)文章中單詞出現(xiàn)次數(shù)實(shí)例

    python統(tǒng)計(jì)文章中單詞出現(xiàn)次數(shù)實(shí)例

    在本篇文章里小編給大家整理的是關(guān)于python統(tǒng)計(jì)文章中單詞出現(xiàn)次數(shù)實(shí)例,需要的朋友們參考學(xué)習(xí)下。
    2020-02-02
  • 最新評(píng)論

    壤塘县| 闻喜县| 建平县| 波密县| 张家港市| 馆陶县| 高密市| 西安市| 专栏| 鹤山市| 乌恰县| 克拉玛依市| 兖州市| 关岭| 溧阳市| 扎囊县| 吐鲁番市| 白城市| 开封县| 永清县| 古交市| 泰州市| 晋江市| 台江县| 托克逊县| 南阳市| 霞浦县| 甘南县| 庄河市| 龙州县| 乌什县| 安达市| 澳门| 蒙阴县| 洞口县| 莱西市| 邵东县| 本溪市| 内黄县| 黑龙江省| 涞水县|