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 返回汉字的汉语拼音
Feb 27 Python
浅谈MySQL中的触发器
May 05 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
python3编码问题汇总
Sep 06 Python
python实现内存监控系统
Mar 07 Python
对python 自定义协议的方法详解
Feb 13 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
Jun 03 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
浅析Python __name__ 是什么
Jul 07 Python
Python importlib模块重载使用方法详解
Oct 13 Python
如何用python 操作zookeeper
Dec 28 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面向对象全攻略 (七) 继承性
2009/09/30 PHP
一个PHP分页类的代码
2011/05/18 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
用javascript实现倒计时效果
2021/02/09 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
Python 多线程Threading初学教程
2017/08/22 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
护士自我评价
2014/02/01 职场文书
毕业寄语大全
2014/04/09 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
合作意向书范本
2019/04/17 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
解读Vue组件注册方式
2021/05/15 Vue.js
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
一文搞懂Python Sklearn库使用
2021/08/23 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python