欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何將yolo格式轉(zhuǎn)化為voc格式:txt轉(zhuǎn)xml(親測(cè)有效)

 更新時(shí)間:2023年12月20日 09:36:02   作者:Dragon_0010  
這篇文章主要介紹了如何將yolo格式轉(zhuǎn)化為voc格式:txt轉(zhuǎn)xml,親測(cè)有效,可以使用,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),感興趣的朋友參考下吧

1.文件目錄如下所示:

對(duì)以上目錄的解釋:

1.dataset下面的image文件夾:里面裝的是數(shù)據(jù)集的原圖片

2.dataset下面的label文件夾:里面裝的是圖片對(duì)應(yīng)得yolo格式標(biāo)簽

3.dataset下面的Annotations文件夾:這是一個(gè)空文件夾,里面要裝得是即將要生成得voc格式標(biāo)簽

2.轉(zhuǎn)換代碼如下所示

新建一個(gè)convert.py文件,然后將下面代碼復(fù)制進(jìn)去

注意:文件夾的格式要與我的一樣才行

from xml.dom.minidom import Document
import os
import cv2
# def makexml(txtPath, xmlPath, picPath):  # txt所在文件夾路徑,xml文件保存路徑,圖片所在文件夾路徑
def makexml(picPath, txtPath, xmlPath):  # txt所在文件夾路徑,xml文件保存路徑,圖片所在文件夾路徑
    """此函數(shù)用于將yolo格式txt標(biāo)注文件轉(zhuǎn)換為voc格式xml標(biāo)注文件
    """
    dic = {'0': "pedestrian",  # 創(chuàng)建字典用來(lái)對(duì)類型進(jìn)行轉(zhuǎn)換
           '1': "people",  # 此處的字典要與自己的classes.txt文件中的類對(duì)應(yīng),且順序要一致
           '2': "bicycle",
           '3': "car",
           '4': "van",
           '5': "truck",
           '6': "tricycle",
           '7': "awning-tricycle",
           '8': "bus",
           '9': "motor",
           }
    files = os.listdir(txtPath)
    for i, name in enumerate(files):
        xmlBuilder = Document()
        annotation = xmlBuilder.createElement("annotation")  # 創(chuàng)建annotation標(biāo)簽
        xmlBuilder.appendChild(annotation)
        txtFile = open(txtPath + name)
        txtList = txtFile.readlines()
        img = cv2.imread(picPath + name[0:-4] + ".jpg")
        Pheight, Pwidth, Pdepth = img.shape
        folder = xmlBuilder.createElement("folder")  # folder標(biāo)簽
        foldercontent = xmlBuilder.createTextNode("driving_annotation_dataset")
        folder.appendChild(foldercontent)
        annotation.appendChild(folder)  # folder標(biāo)簽結(jié)束
        filename = xmlBuilder.createElement("filename")  # filename標(biāo)簽
        filenamecontent = xmlBuilder.createTextNode(name[0:-4] + ".jpg")
        filename.appendChild(filenamecontent)
        annotation.appendChild(filename)  # filename標(biāo)簽結(jié)束
        size = xmlBuilder.createElement("size")  # size標(biāo)簽
        width = xmlBuilder.createElement("width")  # size子標(biāo)簽width
        widthcontent = xmlBuilder.createTextNode(str(Pwidth))
        width.appendChild(widthcontent)
        size.appendChild(width)  # size子標(biāo)簽width結(jié)束
        height = xmlBuilder.createElement("height")  # size子標(biāo)簽height
        heightcontent = xmlBuilder.createTextNode(str(Pheight))
        height.appendChild(heightcontent)
        size.appendChild(height)  # size子標(biāo)簽height結(jié)束
        depth = xmlBuilder.createElement("depth")  # size子標(biāo)簽depth
        depthcontent = xmlBuilder.createTextNode(str(Pdepth))
        depth.appendChild(depthcontent)
        size.appendChild(depth)  # size子標(biāo)簽depth結(jié)束
        annotation.appendChild(size)  # size標(biāo)簽結(jié)束
        for j in txtList:
            oneline = j.strip().split(" ")
            object = xmlBuilder.createElement("object")  # object 標(biāo)簽
            picname = xmlBuilder.createElement("name")  # name標(biāo)簽
            namecontent = xmlBuilder.createTextNode(dic[oneline[0]])
            picname.appendChild(namecontent)
            object.appendChild(picname)  # name標(biāo)簽結(jié)束
            pose = xmlBuilder.createElement("pose")  # pose標(biāo)簽
            posecontent = xmlBuilder.createTextNode("Unspecified")
            pose.appendChild(posecontent)
            object.appendChild(pose)  # pose標(biāo)簽結(jié)束
            truncated = xmlBuilder.createElement("truncated")  # truncated標(biāo)簽
            truncatedContent = xmlBuilder.createTextNode("0")
            truncated.appendChild(truncatedContent)
            object.appendChild(truncated)  # truncated標(biāo)簽結(jié)束
            difficult = xmlBuilder.createElement("difficult")  # difficult標(biāo)簽
            difficultcontent = xmlBuilder.createTextNode("0")
            difficult.appendChild(difficultcontent)
            object.appendChild(difficult)  # difficult標(biāo)簽結(jié)束
            bndbox = xmlBuilder.createElement("bndbox")  # bndbox標(biāo)簽
            xmin = xmlBuilder.createElement("xmin")  # xmin標(biāo)簽
            mathData = int(((float(oneline[1])) * Pwidth + 1) - (float(oneline[3])) * 0.5 * Pwidth)
            xminContent = xmlBuilder.createTextNode(str(mathData))
            xmin.appendChild(xminContent)
            bndbox.appendChild(xmin)  # xmin標(biāo)簽結(jié)束
            ymin = xmlBuilder.createElement("ymin")  # ymin標(biāo)簽
            mathData = int(((float(oneline[2])) * Pheight + 1) - (float(oneline[4])) * 0.5 * Pheight)
            yminContent = xmlBuilder.createTextNode(str(mathData))
            ymin.appendChild(yminContent)
            bndbox.appendChild(ymin)  # ymin標(biāo)簽結(jié)束
            xmax = xmlBuilder.createElement("xmax")  # xmax標(biāo)簽
            mathData = int(((float(oneline[1])) * Pwidth + 1) + (float(oneline[3])) * 0.5 * Pwidth)
            xmaxContent = xmlBuilder.createTextNode(str(mathData))
            xmax.appendChild(xmaxContent)
            bndbox.appendChild(xmax)  # xmax標(biāo)簽結(jié)束
            ymax = xmlBuilder.createElement("ymax")  # ymax標(biāo)簽
            mathData = int(((float(oneline[2])) * Pheight + 1) + (float(oneline[4])) * 0.5 * Pheight)
            ymaxContent = xmlBuilder.createTextNode(str(mathData))
            ymax.appendChild(ymaxContent)
            bndbox.appendChild(ymax)  # ymax標(biāo)簽結(jié)束
            object.appendChild(bndbox)  # bndbox標(biāo)簽結(jié)束
            annotation.appendChild(object)  # object標(biāo)簽結(jié)束
        f = open(xmlPath + name[0:-4] + ".xml", 'w')
        xmlBuilder.writexml(f, indent='\t', newl='\n', addindent='\t', encoding='utf-8')
        f.close()
if __name__ == "__main__":
    picPath = "dataset/image/"  # 圖片所在文件夾路徑,后面的/一定要帶上
    txtPath = "dataset/label/"  # txt所在文件夾路徑,后面的/一定要帶上
    xmlPath = "dataset/Annotations/"  # xml文件保存路徑,后面的/一定要帶上
    makexml(picPath, txtPath, xmlPath)

3.需要修改的地方-標(biāo)簽字典

如果你要轉(zhuǎn)換得標(biāo)簽內(nèi)容與上面標(biāo)簽字典得內(nèi)容不同得話,請(qǐng)按需求修改成你自己的標(biāo)簽

4.需要修改的地方-文件夾路徑

如果你的文件夾路徑跟我上面的不一樣的話,那么在這里修改成你對(duì)應(yīng)的文件夾路徑

5.運(yùn)行你剛剛創(chuàng)建的convert.py文件,就生成xml格式的標(biāo)簽了

6.使用labelimg驗(yàn)證一下轉(zhuǎn)換之后的格式

先打開(kāi)圖片和標(biāo)簽所在的文件夾

在這里輸入cmd

打開(kāi)命令行窗口

先激活虛擬環(huán)境,輸入命令:

activate yolo

然后使用labelimg驗(yàn)證

labelimg image

在選擇標(biāo)簽文件夾的時(shí)候選擇剛才生成的voc格式標(biāo)簽的文件夾

然后進(jìn)入頁(yè)面就是這個(gè)樣子

說(shuō)明轉(zhuǎn)換格式成功啦?。。?/strong>

到此這篇關(guān)于如何將yolo格式轉(zhuǎn)化為voc格式:txt轉(zhuǎn)xml(親測(cè)有效)的文章就介紹到這了,更多相關(guān)yolo格式轉(zhuǎn)化為voc格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python獲取某一進(jìn)程的CPU利用率的方法詳解

    Python獲取某一進(jìn)程的CPU利用率的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)獲取某一進(jìn)程的CPU利用率,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • python 字典中取值的兩種方法小結(jié)

    python 字典中取值的兩種方法小結(jié)

    今天小編就為大家分享一篇python 字典中取值的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Python爬蟲(chóng)爬取網(wǎng)站圖片

    Python爬蟲(chóng)爬取網(wǎng)站圖片

    這篇文章主要介紹了Python爬蟲(chóng)爬取網(wǎng)站圖片,此次python3主要用requests,解析圖片網(wǎng)址主要用beautiful soup,可以基本完成爬取圖片功能,需要的朋友可以參考一下
    2022-01-01
  • Django實(shí)現(xiàn)組合搜索的方法示例

    Django實(shí)現(xiàn)組合搜索的方法示例

    本篇文章主要介紹了Django實(shí)現(xiàn)組合搜索的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 解讀tf.keras.layers模塊中的函數(shù)

    解讀tf.keras.layers模塊中的函數(shù)

    這篇文章主要介紹了tf.keras.layers模塊中的函數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python多種接口請(qǐng)求方式示例詳解

    Python多種接口請(qǐng)求方式示例詳解

    這篇文章主要介紹了Python多種接口請(qǐng)求方式示例?,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下
    2024-08-08
  • 利用Python程序讀取Excel創(chuàng)建折線圖

    利用Python程序讀取Excel創(chuàng)建折線圖

    這篇文章主要介紹了利用Python程序讀取Excel創(chuàng)建折線圖,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Python入門教程之變量與數(shù)據(jù)類型

    Python入門教程之變量與數(shù)據(jù)類型

    這篇文章主要介紹了Python入門教程之變量與數(shù)據(jù)類型的相關(guān)知識(shí),文中給大家提到了變量的基本概念和數(shù)據(jù)類型的相關(guān)實(shí)例代碼,需要的朋友可以參考下
    2022-02-02
  • jupyter notebook使用argparse傳入list參數(shù)

    jupyter notebook使用argparse傳入list參數(shù)

    這篇文章主要介紹了jupyter notebook使用argparse傳入list參數(shù),jupyter notebook其實(shí)是可以使用 argparse來(lái)調(diào)用參數(shù)的,只要把參數(shù)轉(zhuǎn)為list即可,下面來(lái)看看具體的實(shí)現(xiàn)過(guò)程吧
    2022-01-01
  • python處理html轉(zhuǎn)義字符的方法詳解

    python處理html轉(zhuǎn)義字符的方法詳解

    這篇文章主要介紹了python處理html轉(zhuǎn)義字符的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python針對(duì)常見(jiàn)HTML轉(zhuǎn)義字符處理技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07

最新評(píng)論