VOC格式样本处理

现在很多训练样本都是VOC格式,而样本数据又需要分析处理。
写了一个小脚本对VOC格式的数据进行处理:

# -*- coding:utf-8 -*-  
import cv2
import os
import argparse
import numpy as np
from xml.etree import ElementTree as ET

def parse_args():
    args = argparse.ArgumentParser()
    args.add_argument('Annotations',help='Annotations File')
    args.add_argument('ImageSets',help='ImageSets File')
    args.add_argument('JPEGImages',help='JPEGImages File')
    return args.parse_args()

def getbbox(xml):
    tree = ET.parse(xml)
    root = tree.getroot()
    bboxes = []
    for bndbox in root.iter(tag = "bndbox"):
        xmin = int(bndbox[0].text)
        ymin = int(bndbox[1].text)
        xmax = int(bndbox[2].text)
        ymax = int(bndbox[3].text)
        bboxes.append([xmin, ymin, xmax, ymax])
    return bboxes

def fill(img, xml):
    im = cv2.imread(img)
    bboxes = getbbox(xml)
    for xmin,ymin,xmax,ymax in bboxes:
        w = xmax-xmin+1
        h = ymax-ymin+1
        if w < 20 or h < 20:
            rect = np.array([[(xmin, ymin), (xmin, ymax), (xmax, ymax), (xmax, ymin)]])
            cv2.fillPoly(im, rect, (0,0,0))
        else:
            cv2.rectangle(im, (xmin, ymin), (xmax, ymax), (0,0,255), 2)
            cv2.putText(im, str(w), (xmin,ymin-5), 0, 1, (0,255,0))
    cv2.imshow('fill', im)
    cv2.waitKey()


kind = {'trainval': False, 'test': True}

def vision_label(img, xml):
    im = cv2.imread(img)
    bboxes = getbbox(xml)
    for xmin,ymin,xmax,ymax in bboxes:
        w = xmax-xmin
        cv2.rectangle(im, (xmin, ymin), (xmax, ymax), (0,0,255), 2)
        cv2.putText(im, str(w), (xmin,ymin-5), 0, 1, (0,255,0))
    cv2.imshow('label', im)
    cv2.waitKey()

vision = False
fillful = True
def handle(Annotations, JPEGImages, ImageSets):
    for key in kind.keys():
        if kind[key]:
            with open(ImageSets+'/Main/'+key+'.txt') as f:
                for line in f:
                    name = line[:-1]
                    img = JPEGImages+"\\"+name+'.jpg'
                    xml = Annotations+"\\"+name+'.xml'
                    if vision:
                        vision_label(img, xml)
                    if fillful:
                        fill(img, xml)


if __name__ == "__main__":
    args = parse_args()
    handle(args.Annotations, args.JPEGImages, args.ImageSets)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 热成像数据集通常采用voc(Visual Object Classes)格式进行存储和标注。这种格式能够方便地记录图像中的目标位置和类别信息。 VOC格式的目录结构主要包括JPEGImages、Annotations、ImageSets和Segmentation四个文件夹。JPEGImages文件夹用于存储热成像图像(通常为JPEG格式)。Annotations文件夹中包含与每张图像对应的XML文件,用于存储目标的位置和类别信息。ImageSets文件夹中包含了训练集、验证集和测试集等相关文本文件。Segmentation文件夹是可选的,用于存储图像的语义分割标注信息。 在XML文件中,每个目标都被表示为一个object标签,包含了目标类别的名称、边界框的坐标信息以及其他相关属性。注意,热成像图像中的温度信息一般不会直接记录在VOC格式的XML文件中,而是通过颜色映射将温度信息转化为可视化的RGB图像。 标注热成像数据集时,通常需要根据热成像图像和可见光图像之间的对应关系,手动或使用特定算法进行目标对齐。然后,根据目标在热成像图像中的位置和边界框,将标注信息记录到相应的XML文件中。 综上所述,热成像数据集的VOC格式能够方便地记录和管理目标的位置和类别信息。通过这种格式,研究者和开发人员可以更好地进行热成像图像的目标检测、目标跟踪等相关研究工作。 ### 回答2: 热成像数据集是以热像仪所采集的热成像图像为基础的数据集,用于目标检测、图像分割等计算机视觉任务的训练和评估。而voc格式是一种常见的图像数据集格式,常用于目标检测任务的标注。下面我将介绍热成像数据集voc格式的一些特点和使用方式。 热成像数据集voc格式主要由两部分组成:图像集和标注文件。图像集中包含了一系列的热成像图像,每张图像都是一个用于训练或测试的样本。标注文件则用于标注图像集中各个目标的位置和类别信息。 在热成像数据集voc格式的标注文件中,每个图像对应一个同名的XML文件,其中包含了图像的基本信息、目标的数量以及每个目标的位置和类别信息。目标的位置信息一般用矩形框来表示,即通过目标的左上角和右下角坐标进行标注。同时,还可以指定目标的类别,例如人、动物、车辆等。 使用热成像数据集voc格式时,首先需要加载图像集和对应的XML标注文件。然后可以利用图像处理的方法对热成像图像进行预处理,例如调整尺寸、增强对比度等。接着,根据标注文件中的目标位置信息,可以提取出目标感兴趣区域(ROI)作为训练或测试样本,同时关联上对应的类别信息。 在目标检测任务中,可以使用深度学习方法,例如卷积神经网络(CNN),对提取出的目标ROI进行特征提取和分类。可以使用热成像数据集voc格式提供的标注信息作为训练数据,通过模型训练来预测新图像中的目标位置和类别信息。 总之,热成像数据集voc格式提供了一种方便的方式来组织和标注热成像图像数据,为目标检测等计算机视觉任务的训练和评估提供了基础。通过对图像和标注文件的处理,可以提取出目标ROI并进行相应的任务处理,从而实现对热成像图像中目标的自动识别和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值