博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#解析XML文件来获得pascal_voc特定目标负样本
阅读量:7069 次
发布时间:2019-06-28

本文共 3910 字,大约阅读时间需要 13 分钟。

近期在做船仅仅识别方面的事情,须要大量的负样本来训练adaboost分类器。

我从网上下载到一个pascal_voc的数据集。须要找到不包括船仅仅的那些复制出来。

数据集特点

对于每一个图片有一个xml文件。介绍了这个文件的信息,有个object标签介绍了图片中目标类别

老人与狗
比方上面这副图片的xml文件为:

VOC2007
000001.jpg
The VOC2007 Database
PASCAL VOC2007
flickr
341012865
Fried Camels
Jinky the Fruit Bat
353
500
3
0
dog
Left
1
0
48
240
195
371
person
Left
1
0
8
12
352
498

比方上面这个就包括dog和person

解决方式

我们须要做的就是这道叶子节点里的name看是不是boat假设不是的话就取到这个图片

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;namespace 获取负样本{    class Program    {        static void Main(string[] args)        {            /*首先获取xml文件夹下的全部文件的文件夹列表和名称*/            //List
fileNames = new List
();//存储文件名称; //C:\Users\dragonfive\Desktop\pascal_voc\VOCtrainval_06-Nov-2007\VOCdevkit\VOC2007\Annotations string path = @"C:\Users\dragonfive\Desktop\pascal_voc\VOCtrainval_06-Nov-2007\VOCdevkit\VOC2007\Annotations\"; string imageSourcePath = @"C:\Users\dragonfive\Desktop\pascal_voc\VOCtrainval_06-Nov-2007\VOCdevkit\VOC2007\JPEGImages\"; string imageDestPath = @"D:\IP_CV_WorkSpace\Img\NegSample\"; int numberOfNegSample = 0; foreach (var file in Directory.GetFiles(path,"*.xml"))//这个获取的文件名称带前面的文件夹; { //Console.WriteLine(file); //获取该路径的不带扩展名的文件名称; string fileName = Path.GetFileNameWithoutExtension(file); //Console.WriteLine(fileName); //以下读取xml的内容 //string xmlData = File.ReadAllText(file, Encoding.Default); //Console.WriteLine(xmlData); /*循环完毕每一个xml文件的解析,假设没有boat就拷贝到新的文件夹*/ XmlDocument doc = new XmlDocument(); doc.Load(file); XmlElement root = doc.DocumentElement; XmlNodeList listNodes = root.SelectNodes("/annotation/object/name"); bool hasBoat = false; foreach (XmlNode node in listNodes ) { //Console.WriteLine(node.InnerText); //假设当中含有boat就continue,否则赋值到负样本的位置; if (node.InnerText == "boat") { hasBoat = true; Console.WriteLine(fileName+"里面有船"); break; } } if (hasBoat==false) { //复制 File.Copy(imageSourcePath + fileName + ".jpg", imageDestPath + fileName + ".jpg",true); Console.WriteLine("成功复制"+fileName); numberOfNegSample++; } //Console.ReadKey(); } Console.WriteLine("共计复制负样本个数为:" + numberOfNegSample); Console.ReadKey(); } }}

转载地址:http://ddhll.baihongyu.com/

你可能感兴趣的文章
Ruby判断文件是否存在
查看>>
servlet中避免405错误的产生
查看>>
Git的checkout, reset, revert
查看>>
取余递归
查看>>
Java金钱小写转大写
查看>>
林小宅的点名册
查看>>
常用算法Java实现之直接插入排序
查看>>
《第一行代码》书籍阅读笔记
查看>>
java基础知识点复习
查看>>
[Hive_add_10] Hive 的 serde (序列化 & 反序列化) 操作
查看>>
7月18日实习日志
查看>>
python面向对象之类成员修饰符
查看>>
Linux命令大全之基本命令
查看>>
HDU2048 神、上帝以及老天爷
查看>>
Android开发指南(35) —— Toast Notifications
查看>>
【Andorid X 项目笔记】禁用ListView的Fling功能(1)
查看>>
RGB、ARGB颜色系统记录
查看>>
二、Python-运算符、控制及循环语句
查看>>
个人作业—Alpha测试
查看>>
Sturts2 与android的图片上传交互
查看>>