将照片重命名为000001的形式,适应VOC数据集的格式要求,当然仅是看着美观,实际上也可以不重命名。

from xml.etree.ElementTree import ElementTree
from os import walk, path
import cv2
import os


def read_xml(in_path):
    tree = ElementTree()
    tree.parse(in_path)
    return tree


def write_xml(tree, out_path):
    tree.write(out_path, encoding="utf-8", xml_declaration=True)

def get_path_prex(rootdir):
    data_path = []
    prefixs = []
    for root, dirs, files in walk(rootdir, topdown=True):
        for name in files:
            pre, ending = path.splitext(name)
            if ending != ".xml":
                continue
            else:
                data_path.append(path.join(root, name))
                prefixs.append(pre)

    return data_path, prefixs


if __name__ == "__main__":

    # build files which will be used in VOC2007
    if not os.path.exists("Annotations_out"):
        os.mkdir("Annotations_out")
    if not os.path.exists("JPEGImages_out"):
        os.mkdir("JPEGImages_out")

    xml_paths, prefixs = get_path_prex("labels")

    for i in range(len(xml_paths)):
        # rename and save the corresponding xml
        tree = read_xml(xml_paths[i])
        # save output xml, 000001.xml
        write_xml(tree, "Annotations/{}.xml".format("%06d" % (i + 1)))

        # rename and save the corresponding image
        img_pre = prefixs[i] + ".jpeg"
        root = os.getcwd() + '/images/'
        img_path = path.join(root, img_pre)
        img = cv2.imread(img_path)
        # save output jpg, 000001.jpg
        cv2.imwrite('JPEGImages/{}.jpg'.format("%06d" % (i + 1)), img)
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐