標簽轉格式問題之——xml_2_txt.py

import xml.etree.ElementTree as ET#xml 是python自帶的package
import osclasses=['walnut']#寫自己的分類名
pre_dir='F:/2023walnut/labels'#xml文件所在文件夾
target_dir='F:/2023walnut/yolo'#想要存儲txt文件的文件夾
path=os.listdir(pre_dir)for path1 in path:
# path1=r'C:\Users\loadlicb\Desktop\chrome_RTJOXXsYHM.xml'#xml文件路徑tree=ET.parse(os.path.join(pre_dir,path1))root=tree.getroot()#這兩個步驟將xml文件拆出來了oo=[]for child in root:if child.tag == 'filename':#tag對應的是《》中的內容,text對應的是兩個《》中間的部分內容oo.append(child.text)#獲得xml文件的名# print(child.text)for i in child:if i.tag == 'width':#獲得圖片的woo.append(i.text)# print(i.text)if i.tag == 'height':#獲得圖片的hoo.append(i.text)# print(i.text)if i.tag == 'name':#獲得當前框的classoo.append(i.text)# print(i.text)for j in i:if j.tag == 'xmin':#獲得當前框的兩個對角線上的點的兩組坐標oo.append(j.text)# print(j.text)if j.tag == 'ymin':oo.append(j.text)# print(j.text)if j.tag == 'xmax':oo.append(j.text)# print(j.text)if j.tag == 'ymax':oo.append(j.text)# print(j.text)print(oo)filename=oo[0]#讀取圖片的名和寬高filename=os.path.split(filename)# print(filename)name,extension=os.path.splitext(filename[1])#獲取xml名和后綴width=oo[1]dw=1/int(width)height=oo[2]dh=1/int(height)oo.pop(0)oo.pop(0)oo.pop(0)#刪除三次oolist的0號元素back=[]# print((len(oo))%5)for i in range(len(oo)//5):for p in range(len(classes)):#劃定class的序號if classes[p] == oo[5*i]:#str == strcl=pback.append(cl)x=(int(oo[5*i+1])+int(oo[5*i+3]))/2#oo里的所有元素都是str,數字也是y = (int(oo[5 * i + 2]) + int(oo[5 * i + 4])) / 2#計算標注框的中心點的xy坐標w=int(oo[5*i+3])-int(oo[5*i+1])h=int(oo[5*i+4])-int(oo[5*i+2])#計算標注框的寬高back.append('{:.4f}'.format(x*dw))back.append('{:.4f}'.format(y * dh))back.append('{:.4f}'.format(w * dw))back.append('{:.4f}'.format(h * dh))# back.append(y*dh)# back.append(w*dw)# back.append(h*dh)#轉換到0-1區間print(back)# dir=r'C:\Users\loadlicb\Desktop'#label文件夾名file=open(os.path.join(target_dir,name+'.txt'),'w')for i in range(len(back)):l=' 'if (i+1)%5==0:l='\n'file.writelines(str(back[i])+l)#完成了,現在進行批量操作修改
#完成

這個腳本中只需要修改三處地方:

classes=['walnut']#寫自己的分類名

pre_dir='F:/2023walnut/labels'#xml文件所在文件夾

target_dir='F:/2023walnut/yolo'#想要存儲txt文件的文件夾


——————————————今天不學習,明天變垃圾!—————————————

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717907.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717907.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717907.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[變壓器故障診斷分類及預測】基于Elman神經網絡

課題名稱:基于Elman神經網絡的變壓器故障診斷分類及預測 版本日期:2024-02-10 運行方式:直接運行Elman0507.m文件 代碼獲取方式:私信博主或QQ:491052175 模型描述: 對變壓器油中溶解氣體進行分析是變壓…

Noise Conditional Score Networks(NCSN)學習

參考: [1] https://zhuanlan.zhihu.com/p/597490389 [2] https://www.zhangzhenhu.com/aigc/Score-Based_Generative_Models.html TOC 1 基于分數的生成模型1.1 簡介和動機1.2 Score Matching及其改進1.2.1 Score Matching1.2.2 Sliced score matching(不…

XSS_lab(level1-level5)

level1 直接輸入頁面沒有發現輸入框&#xff0c;觀察url發現有傳參 嘗試修改傳參為&#xff1a;<script>alert(1)</script> 過啦&#xff01; level2 頁面中有輸入框&#xff0c;嘗試構建語句&#xff1a;<script>alert(1)</script>,傳輸后查看源代…

國際心理學導師-葉子文JeffreyYip的《意識地圖》

“物質就是能量。” ---愛因斯坦 “時常保持覺知&#xff0c;有意識地發現情緒起伏 你隨時都能翻轉人生 做自己人生的導演 當你頻率高時&#xff0c;萬事萬物為你而來” ---大衛霍金斯 葉子文-《意識地圖》&#xff1a;高階心理學課程 宇宙間萬物的本質是能量。一切都靠能量…

Java基礎---lambda表達式

一、為什么要引入lambda表達式 lambda 表達式是一個可傳遞的代碼塊 &#xff0c; 可以在以后執行一次或多次 。 在介紹lambda表達式之前&#xff0c;我們看一下&#xff0c;以前&#xff0c;我們對于一個問題的通常寫法。 假設你已經了解了如何按指定時間間隔完成工作&#xf…

js字符串轉json的3種方法

1.eval方式解析 function strToJson(str){var json eval("(" str ")");return json;}console.log(strToJson("{int:1, string:demo}")); 運行截圖&#xff1a; 注&#xff1a; 記得別忘了str兩旁的小括號。 永遠不要使用 eval !!! eval() 是一…

611. 有效三角形的個數 - 力扣

1. 題目 給定一個包含非負整數的數組 nums &#xff0c;返回其中可以組成三角形三條邊的三元組個數。 2. 示例 3. 分析 利用已升序了的數組通過 a b > c 這條公式找出符合要求的三元組&#xff0c;利用這個公式的前提是三條邊為從小到大&#xff0c;再利用單調性快速統計…

STM32 (1)

1.基本信息 stm32是由ST公司生產的一種32位微控制器&#xff08;單片機&#xff09;。 1.1 各種型號 stm32是32位單片機的總稱&#xff0c;有多種不同的系列。 32即用32個比特位表示一個地址&#xff0c;尋址范圍&#xff1a;0x00000000 --0xffffffff (4GB) 1.2 存儲密度 …

Mysql事務的兩段式提交

binlog和redo log區別 為了滿足Mysql的事物ACID特性&#xff0c;InnoDB引入了redo log和 undo log日志文件。為了滿足主從同步Mysql引入了binlog日志文件。redo log和binlog文件都保存的數據庫對數據庫的修改&#xff0c;但是binlog和redo log本質上是不一樣的&#xff1a; r…

UE5中實現后處理深度描邊

后處理深度描邊可以通過取得邊緣深度變化大的區域進行描邊&#xff0c;一方面可以用來做角色的等距內描邊&#xff0c;避免了菲尼爾邊緣光不整齊的問題&#xff0c;另一方面可以結合場景掃描等特效使用&#xff0c;達到更豐富的效果&#xff1a; 后來解決了開啟TAA十字線和鋸齒…

XXL-Job的基本使用

一、市面上常見的任務調度產品 針對分布式任務調度的需求&#xff0c;市場上出現了很多的產品: 其中XXL-job 是我們經常使用的任務調度平臺,XXL這三個英文字母.是以作者名許雪里命名的。 可以前往 Gitee 地址進行下載使用 https://gitee.com/xuxueli0323/xxl-job.git二、XXL-J…

使用`paddle.nn.Layer`自定義網絡教程

文章目錄 使用paddle.nn.Layer自定義網絡教程1. 概念介紹2. 數據處理3. 搭建一個完整的深度學習網絡4. 使用paddle.nn.Layer構建深度學習網絡5. 利用paddle.nn.Layer進行子層的訪問6. 修改paddle.nn.Layer層的成員變量7. 存儲模型的參數8. 總結 使用paddle.nn.Layer自定義網絡教…

LockBit病毒入侵揭秘:如何防范與應對

在數字時代&#xff0c;隨著科技的飛速發展&#xff0c;網絡安全問題愈發凸顯。惡意軟件和勒索軟件等網絡威脅正不斷演變&#xff0c;其中一款備受關注的勒索軟件就是LockBit。本文將深入介紹LockBit的特征、攻擊手段、演進歷程以及對網絡安全的威脅。 01 主要特征 LockBit是…

算法知識(java)隨筆

1: 保留指定的小數為 printf("%.2f\n", ret) 和c語言類似 // 怎么保留小數 System.out.printf("%.2f\n", 1.0/3); 2: 在寫小數二分的時候 加入讓結果保留6位數 那么 while(r - l > 1e-8) 3: java Map里面之前寫的代碼: /*** 也就是 統計x在map里面的…

第二十一周周報

文獻閱讀&#xff1a;Recent Advances of Monocular 2D and 3D Human Pose Estimation: A Deep Learning Perspective 摘要&#xff1a;在本文中&#xff0c;作者提供了一個全面的 2d到3d視角來解決單目人體姿態估計的問題。首先&#xff0c;全面總結了人體的二維和三維表征。…

騰訊云Windows輕量應用服務器的默認密碼是什么,以及如何重置?

首先&#xff0c;騰訊云輕量應用服務器的默認用戶名是沒有設置密碼的&#xff0c;首次登錄時需要重置密碼。這意味著如果你的輕量應用服務器是騰訊云的&#xff0c;那么默認密碼是不存在的&#xff0c;需要通過重置密碼來獲得一個新的密碼。 關于如何重置密碼&#xff0c;有幾…

chatgpt新版本api的調用

chatgpt新版本api的調用 原始版本調用api方式&#xff1a;新版調用chatgpt-api的方式&#xff1a; 原始版本調用api方式&#xff1a; import openaiopenai.api_key "{上面復制的key}"completion openai.ChatCompletion.create(model"gpt-3.5-turbo",mes…

Spring El表達式官方文檔學習

文章目錄 推薦一、概述1、什么是SpEL2、SpEL能做什么 二、SpEL表達式使用1、文字表達式2、屬性, 數組, List, Map,和 索引&#xff08;1&#xff09;屬性操作&#xff08;2&#xff09;數組和List&#xff08;3&#xff09;Map 3、內嵌List4、內嵌Map5、構建數組6、調用類的方法…

Windows的Linux化持續推進中

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

Java基礎 - 6 - 面向對象(二)

Java基礎 - 6 - 面向對象&#xff08;一&#xff09;-CSDN博客 二. 面向對象高級 2.1 static static叫做靜態&#xff0c;可以修飾成員變量、成員方法 2.1.1 static修飾成員變量 成員變量按照有無static修飾&#xff0c;分為兩種&#xff1a;類變量、實例變量&#xff08;對象…