当前位置: 首页 > 编程笔记 >

Python 生成VOC格式的标签实例

郦良才
2023-03-14
本文向大家介绍Python 生成VOC格式的标签实例,包括了Python 生成VOC格式的标签实例的使用技巧和注意事项,需要的朋友参考一下

常用目标检测模型基本都是读取的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格式的标签实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我遇到了轴刻度标签的格式问题。我禁用了y_axis的偏移量: 并尝试将其设置为科学格式,但我得到的是: 但我期望这样的事情: 或类似。 我真正想要的是这样的: 我可以尝试将标签设置为静态,但是最后我将拥有数十或数百个具有不同值的图,因此需要动态设置。 一种替代方法是将y_axis偏移量放置为标签,但是我也不知道如何执行此操作。 问题答案: 有很多方法可以做到这一点 您可以调整功率限制(

  • 我试图找到一种算法,为我正在编写的图表引擎生成Y轴,并且处于拔毛阶段。 四处搜索会产生各种解决方案,但我很难找到一个适合所有数据范围的解决方案。 这是我到目前为止得到的: 这给了我一个新的范围,我想为它生成一个Y轴。 我计算每个YAxis标签之间的距离,如下所示: 我还尝试使用更简单的算法计算滴答声: 前一种方法适用于小范围,例如23- 在0的情况下- 我通过循环labelCount(在我的例子中

  • 我正在努力通过JAVA自动生成SVN标记,需要一些建议。这就是我们手动操作的方式-从SVN repo中检查一个maven项目/插件,并运行一组maven命令(mvn clean test,mvn release:prepare)来生成SVN标记,mvn release:prepare是最后一个命令,它将运行单元测试,生成标记并将其提交给SVN,我正在努力实现这个过程的自动化。 我看了svnkit

  • 本文向大家介绍Python实现的生成格雷码功能示例,包括了Python实现的生成格雷码功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现的生成格雷码功能。分享给大家供大家参考,具体如下: 问题 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。 解决方法: 给定一个

  • 我有一个关于HTML中锚tel:标记的小问题。 这是有效的,还是有关于如何正确书写的标准? 空格和前缀的问题困扰了我,允许吗?

  • 问题内容: 我想格式化Struts 2中标签显示的数字。有一个值。我怎样才能做到这一点?我应该使用吗? 或者,也许我必须使用标签并在资源文件中定义我的格式? 问题答案: 您需要使用带。 属性文件: JSP: 该答案说明了如何使用和使用格式掩码。