Python 生成VOC格式的标签实例


Posted in Python onMarch 10, 2020

常用目标检测模型基本都是读取的PASCAL VOC格式的标签,下面代码用于生成VOC格式的代码,根据需要修改即可:

from lxml import etree, objectify

def gen_txt(filename, h, w, c):
  E = objectify.ElementMaker(annotate=False)
  anno_tree = E.annotation(
    E.folder('VOC_OPEN_IMAGE'),
    E.filename(filename),
    E.source(
      E.database('The VOC2007 Database'),
      E.annotation('PASCAL VOC2007'),
      E.image('flickr'),
      E.flickrid("341012865")
    ),
    E.size(
      E.width(w),
      E.height(h),
      E.depth(c)
    ),
    E.segmented(0),
    E.object(
      E.name('1'),
      E.pose('left'),
      E.truncated('1'),
      E.difficult('0'),
      E.bndbox(
        E.xmin('0'),
        E.ymin('0'),
        E.xmax('0'),
        E.ymax('0')
      )
    ),
  )
  etree.ElementTree(anno_tree).write('ann/'+filename[:-4]+".xml", pretty_print=True)

补充知识: python对PASCAL VOC标注数据进行统计

用于统计训练数据中的类别,以及所有目标的个数:

# coding:utf-8
import xml.etree.cElementTree as ET
import os
from collections import Counter
import shutil
 
# Counter({'towCounter({'tower': 3074, 'windpower': 2014, 'thermalpower': 689, 'hydropower': 261, 'transformer': 225})
# total_num: 6263
 
def count(pathdir,despath):
 category = []
 path = pathdir + '/XML/'
 for index,xml in enumerate(os.listdir(path)):
 # print(str(index) + ' xml: '+ xml)
 root = ET.parse(os.path.join(path, xml))
 objects = root.findall('object')
 
 # ==================select images which has a special object=============
 for obj in objects:
  obj_label = obj.find('name').text
  if obj_label == 'transformer':
  print(xml)
  imgfile = pathdir + 'JPEG/' + xml.replace('xml', 'jpg')
  img_despath = despath + xml.replace('xml', 'jpg')
  # if not os.path.exists(img_despath):
  shutil.copyfile(imgfile, img_despath)
 
 # ==================select images which has a special object=============
 
 category += [ob.find('name').text for ob in objects]
 print(Counter(category))
 total_num = sum([value for key, value in Counter(category).items()])
 print('total_num:',total_num)
 
if __name__ == '__main__':
 # pathdirs = list(set(os.listdir('./')) ^ set(['tools','count.py']))
 # print(pathdirs)
 # for pathdir in pathdirs:
 pathdir = '/summer/Desktop/power_traindata/'
 despath = '/transformer/'
 count(pathdir,despath)

以上这篇Python 生成VOC格式的标签实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现Tab自动补全和历史命令管理的方法
Mar 12 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
Python编程之Re模块下的函数介绍
Oct 28 Python
windows下numpy下载与安装图文教程
Apr 02 Python
Python日期时间Time模块实例详解
Apr 15 Python
使用python画社交网络图实例代码
Jul 10 Python
在Python中预先初始化列表内容和长度的实现
Nov 28 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
基于python使用tibco ems代码实例
Dec 20 Python
Python代码中如何读取键盘录入的值
May 27 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 #Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 #Python
python opencv 检测移动物体并截图保存实例
Mar 10 #Python
Python标准库json模块和pickle模块使用详解
Mar 10 #Python
Python xlrd excel文件操作代码实例
Mar 10 #Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 #Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 #Python
You might like
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
Javascript 按位与运算符 (&)使用介绍
2014/02/04 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
python实现实时监控文件的方法
2016/08/26 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
python 生成器需注意的小问题
2020/09/29 Python
linux面试题参考答案(7)
2014/07/24 面试题
EJB的基本架构
2016/09/22 面试题
中式面点餐厅创业计划书
2014/01/29 职场文书
自主招生自荐信指南
2014/02/04 职场文书
三严三实对照检查材料
2014/08/25 职场文书
篮球拉拉队口号
2015/12/25 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
win10更新失败无限重启解决方法
2022/04/19 数码科技