根据需要修改路径和自己需要的类即可。

import os
import os.path
import shutil fileDir_ann = r'/home/somnus/tttt/VOC2012/Annotations/'
fileDir_img = r'/home/somnus/tttt/VOC2012/JPEGImages/' #存放包含需要的类的图片
saveDir_img = r'/home/somnus/tttt/VOC2012/JPEGImages_ssd/' if not os.path.exists(saveDir_img):
os.mkdir(saveDir_img) names = locals() for files in os.walk(fileDir_ann):
#遍历Annotations中的所有文件
for file in files[2]:
print file + "-->start!" #存放包含需要的类的图片对应的xml文件
saveDir_ann = r'/home/somnus/tttt/VOC2012/Annotations_ssd/' if not os.path.exists(saveDir_ann):
os.mkdir(saveDir_ann)
fp = open(fileDir_ann + file)
saveDir_ann = saveDir_ann + file
fp_w = open(saveDir_ann, 'w')
classes = ['aeroplane','bicycle','bird','boat','bottle','bus','car','cat','chair','cow','diningtable',\
'dog','horse','motorbike','pottedplant','sheep','sofa','train','tvmonitor','person'] lines = fp.readlines() #记录所有的\t<object>\n的位置
ind_start = [] #记录所有的\t</object>\n的位置
ind_end = [] lines_id_start = lines[:]
lines_id_end = lines[:] while "\t<object>\n" in lines_id_start:
a = lines_id_start.index("\t<object>\n")
ind_start.append(a)
lines_id_start[a] = "delete" while "\t</object>\n" in lines_id_end:
b = lines_id_end.index("\t</object>\n")
ind_end.append(b)
lines_id_end[b] = "delete" for k in range(0,len(ind_start)):
for j in range(0,len(classes)):
if classes[j] in lines[ind_start[k]+1]:
a = ind_start[k]
names['block%d'%k] = lines[a:ind_end[k]+1]
break
#需要的类
classes1 = '\t\t<name>person</name>\n' string_start = lines[0:ind_start[0]]
string_end = lines[ind_end[-1] + 1:] a = 0
for k in range(0,len(ind_start)):
if classes1 in names['block%d'%k]:
a += 1
string_start += names['block%d'%k] string_start += string_end
for c in range(0,len(string_start)):
fp_w.write(string_start[c])
fp_w.close() if a == 0:
os.remove(saveDir_ann)
else:
name_img = fileDir_img + os.path.splitext(file)[0] + ".jpg"
shutil.copy(name_img,saveDir_img)
fp.close()

参考

https://blog.csdn.net/samylee/article/details/61919677

VOC2012数据集提取自己需要的类的图片和对应的xml标签的更多相关文章

  1. COCO数据集提取特定多个类并在YOLO-V3上训练

    先占个地方,有空再写 ` import os Dir = './coco_class_6/Annotations/val2014' ImageDir = './coco_class_6/images/ ...

  2. 提取HTML的正文类

    本文转载:http://blog.csdn.net/cjh200102/article/details/6824895 //2.提取html的正文 类 using System; using Syst ...

  3. pyTorch 基于以resnet50为backbone的PSPNet 训练VOC2012数据集

    代码链接:https://github.com/ggyyzm/pytorch_segmentation 使用PSPNet作为主干分类网络 1.将VOC2012数据集下载并解压到data/VOCtrai ...

  4. arcgis python脚本工具实例教程—栅格范围提取至多边形要素类

    arcgis python脚本工具实例教程-栅格范围提取至多边形要素类 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 功能:提取栅格数据的范围, ...

  5. C# 提取Word文档中的图片

    C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...

  6. java常用开发工具类之 图片水印,文字水印,缩放,补白工具类

    import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  7. mybatis逆向工程自动生成实体类、接口以及映射Mapper.xml配置文件

    Mybatis的逆向工程非常简单,只要一个配置文件和一个Main方法就可以实现,下面以maven工程为例: (1)在pom.xml中引入依赖包 <dependency> <group ...

  8. 在Android下通过ExifInterface类操作图片的Exif信息

    什么是Exif 先来了解什么是Exif.Exif是一种图像文件格式,它的数据存储于JPEG格式是完全相同的,实际上Exif格式就是JPEG格式头插入了 数码照片的信息,包括拍摄的光圈.快门.平衡白.I ...

  9. 【mybatis】idea中 mybatis的mapper类去找对应的mapper.xml中的方法,使用插件mybatis-plugin

    idea中 mybatis的mapper类去找对应的mapper.xml中的方法,使用插件mybatis-plugin,名字可能叫Free mybatis-plugin 安装上之后,可能需要重启ide ...

随机推荐

  1. mvn 搭建临时仓库批量下载依赖jar包

    1.新建文件夹temp,在temp下新建setup.bat ,pom.xml 2.编辑setup.bat 和pom.xml bsetup.bat call mvn -f pom.xml depende ...

  2. JDK源码分析-HashMap

    一.HashMap的内部属性 1.1 成员变量 1.1.1 size: HashMap包含的KV键值对的数量,也就是我们通常调用Map.size()方法的返回值 public int size() { ...

  3. ES6:字面量的增强写法

    以前对象字面量的写法: 属性的增强写法: ES6中可以写成: 方法的增强写法 ES6中可以写成: ~~~~~ END ~~~~~

  4. mysql数据库数据备份还原

    1.直接在命令行里面执行 备份一个数据库:mysqldump -h server -u username -p password db_name > database-sqlbkp_`date ...

  5. JS线程及回调函数执行

    JS是单线程的程序,在某些方面来讲并不是十分准确.在浏览器的内核里面有很多的模块,比如js的解释执行的模块,html.css的处理模块,渲染模块等,多数模块是单线程执行的,但是有几个模块是多线程的,比 ...

  6. 高级T-SQL进阶系列 (一)【下篇】:使用 CROSS JOIN 介绍高级T-SQL

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 性能考虑产生了笛卡尔积的这个CROSS JOIN操作符具有一些性能方面的问题需要考虑.因为SQL引擎需要将一个数 ...

  7. Fleck WebSocket使用

    Fleck WebSocket使用 作为笔记存储. 最近公司有这方面的使用需求.在网上查了一些资料后.得到了想要的结果.以下记录摘抄至网上资料. 1.首先,服务端.项目NuGet直接引用Fleck类库 ...

  8. Centos7618安装后常见操作

    1.查看ip ip address  或者ip add 2.查看发行版本 yum -y install redhat-lsb lsb_release -a 3.查看内核版本 uname -r cat ...

  9. 《JavaScript高级程序设计》读书笔记(目录)

    ajax创造性的技术让JavaScript变得更加强大起来.ECMAScript 和DOM标准JavaScript面向对象程序设计和继承----性能,优化 1.简介----JavaScript和ECM ...

  10. Python编程使用PyQT制作视频播放器

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...