#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import os
import xml.etree.elementtree as et
origin_ann_dir =
'/data_1/xml/'
# 設定原始標籤路徑為 annos
new_ann_dir =
'/data_1/xml_new/'
# 設定新標籤路徑 annotations
for dirpaths, dirnames, filenames in os.walk(origin_ann_dir)
:# os.walk遊走遍歷目錄名
for filename in filenames:
print
("process..."
)if os.path.isfile(r'%s%s'
%(origin_ann_dir, filename)):
# 獲取原始xml檔案絕對路徑,isfile()檢測是否為檔案 isdir檢測是否為目錄
origin_ann_path = os.path.join(r'%s%s'
%(origin_ann_dir, filename)
)# 如果是,獲取絕對路徑(重複**)
new_ann_path = os.path.join(r'%s%s'
%(new_ann_dir, filename)
) tree = et.parse(origin_ann_path)
# et是乙個xml檔案解析庫,et.parse()開啟xml檔案。parse--"解析"
root = tree.getroot(
)# 獲取根節點
forobject
in root.findall(
'object'):
# 找到根節點下所有「object」節點
name =
str(
object
.find(
'name'
).text)
# 找到object節點下name子節點的值(字串)
# 功能1.刪除指定類別的標籤。如果name等於str,則刪除該節點
# if (name in ["car_head"]):
# root.remove(object)
# 功能2.修改指定類別的標籤。如果name等於str,則修改name
if(name in
["bigcar"])
:object
.find(
'name'
).text =
"hongzhang"
if(name in
["smallcar"])
:object
.find(
'name'
).text =
"erweima"
# # 功能3.刪除labelmap中沒有的標籤。檢查是否存在labelmap中沒有的類別
# for object in root.findall('object'):
# name = str(object.find('name').text)
# if not (name in ["chepai","chedeng","chebiao","person"]):
# print(filename + "------------->label is error--->" + name)
# # 功能4.比對xml中filename名稱與名稱是否一致。如果xml中filename名稱與檔名稱不一致,則對其進行修改
#tree為檔案,write寫入新的檔案中。
VOC資料集格式介紹
深度學習很多框架都在使用voc資料集,所以先來研究一下voc資料集的具體內容。以pascal voc2017為例,它包含如下5個資料夾 pascal voc提供的所有的,其中包括訓練,測試。存放xml格式的標籤檔案,每個xml對應jpegimage中的一張。可使用labelimg進行標註和檢視。影象...
VOC格式資料集轉YOLO格式資料集
voc使用xml來描述標註,而yolo使用txt格式檔案,導致voc格式資料集無法直接拿來訓練yolo,這就需要轉換格式。為了不重複造輪子,我們使用convert2yolo來進行轉換。python3 example.py datasets voc img path downloads voc2028...
coco分割資料集轉voc格式
coco資料中的ploygon即為標註資料,兩個相連數字為乙個座標 而voc的分割標註直接為png的8位偽彩色圖,通過呼叫調色盤來顯示色彩。因此,要把分割資料整理為voc格式,通過以下步驟 第一,在原圖中繪製目標輪廓並填充,需要注意的是,一般我們的資料都是32位rgb彩色圖,因此,首先需要將32位r...