zoukankan      html  css  js  c++  java
  • 从VOC数据集选择部分类别数据

     1 #!/usr/bin/env python
     2 # -*- encoding: utf-8 -*-
     3 """
     4 @Author  :   {FirstElfin}
     5 @License :   (C) Copyright 2013-2020, {DHWL}
     6 @Contact :   {2968793701@qq.com}
     7 @Software:   PyCharm
     8 @File    :   test.py
     9 @Time    :   11/22/19 11:55 AM
    10 """
    11 import os
    12 import xml.etree.ElementTree as ET
    13 import shutil
    14 
    15 ann_filepath = './VOC2007_22/Annotations/'
    16 img_filepath = './VOC2007_22/JPEGImages/'
    17 img_savepath = './VOC2007/JPEGImages/'
    18 ann_savepath = './VOC2007/Annotations/'
    19 if not os.path.exists(img_savepath):
    20     os.mkdir(img_savepath)
    21 
    22 if not os.path.exists(ann_savepath):
    23     os.mkdir(ann_savepath)
    24 
    25 classes = ['bicycle', 'bus', 'car', 'motorbike', 'train']
    26 
    27 
    28 def save_annotation(file):
    29 
    30     tree = ET.parse(ann_filepath + '/' + file)
    31     root = tree.getroot()
    32     result = root.findall("object")
    33     bool_num = 0
    34     for obj in result:
    35         if obj.find("name").text not in classes:
    36             root.remove(obj)
    37         else:
    38             bool_num = 1
    39     if bool_num:
    40         tree.write(ann_savepath + file)
    41         return True
    42     else:
    43         return False
    44 
    45 
    46 def save_images(file):
    47     name_img = img_filepath + os.path.splitext(file)[0] + ".jpg"
    48     shutil.copy(name_img, img_savepath)
    49     return True
    50 
    51 
    52 if __name__ == '__main__':
    53     for f in os.listdir(ann_filepath):
    54         if save_annotation(f):
    55             save_images(f)

      ./VOC2007_22是备份的数据集(原数据集),./VOC2007是我们自己要生成的数据集(制作自己的数据)

      通过classes可以选择你需要的类别,原始类别为:

    1 classes = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle',
    2            'bus', 'car', 'cat', 'chair', 'cow', 'diningtable',
    3            'dog', 'horse', 'motorbike', 'pottedplant',
    4            'sheep', 'sofa', 'train', 'tvmonitor', 'person']
  • 相关阅读:
    C#动态执行代码
    C#的动态编译执行
    Win7/Vista激活后添加grub引导Linux最简单方法!无需命令行!
    乔布斯:关于 Flash 的思考
    I want to live in a honest country
    twitter bbs
    my follow rule on twitter
    blog will be repleace by twitter?
    blog Prediction
    也说说对blog是否需要静态页面的一点看法
  • 原文地址:https://www.cnblogs.com/dan-baishucaizi/p/11911810.html
Copyright © 2011-2022 走看看