python篇---提取VOC格式的坐标,并按照cameraID进行排序

news2024/11/24 4:59:07

python篇—提取VOC格式的坐标,并按照cameraID进行排序

from datetime import datetime
import xml.etree.ElementTree as ET
import os


sets = [("images")]
# fixme: 所对应的标签
classes = ["2"]
IMAGE_PATH = "./saves/{}.txt"
DATA_TXT = "./saves/"
IMAGE_WRITE_PATH = "images/{}.jpg"
OPEN_XML_PATH = "labels/{}.xml"


def convert_annotation(image_id, list_file):
    in_file = open(OPEN_XML_PATH.format(image_id))
    tree = ET.parse(in_file)
    root = tree.getroot()
    # list_file.write('"'+image_id.split("-")[0]+'"')
    #########################################################################
    list_file.write('{"name":"' + image_id.split("-")[0] + '",' + '"box":')
    # list_file.write(IMAGE_WRITE_PATH.format(image_id))
    #########################################################################
    for obj in root.iter('object'):
        difficult = obj.find('difficult').text
        cls = obj.find('name').text
        if cls not in classes or int(difficult) == 1:
            continue
        cls_id = classes.index(cls)
        xmlbox = obj.find('bndbox')
        b = (int(xmlbox.find('xmin').text), int(xmlbox.find('ymin').text), int(xmlbox.find('xmax').text), int(xmlbox.find('ymax').text))
        # list_file.write(":" + '"(' + (",".join([str(a) for a in b])) + ')"' + ",")
        #########################################################################
        list_file.write('[('+(",".join([str(a) for a in b])) + ")]},")
        #########################################################################

    # list_file.write("}")
    list_file.write('\n')


for image_set in sets:
    image_ids = open(IMAGE_PATH.format(image_set)).read().strip().split()
    str_date_li = []
    for img_id in image_ids:
        str_date = img_id.split(".")[0].split("-")[0]
        str_date_li.append(str_date)
    li_ti1 = sorted(str_date_li)

    save_data_path = '/'.join(DATA_TXT.split('/')[:-1])
    if not os.path.exists(save_data_path):
        os.makedirs(save_data_path)
    list_file = open(os.path.join(DATA_TXT, "images_final1.txt"), 'w')
    for cameraID in li_ti1:
        for image_id in image_ids:
            if image_id.startswith(cameraID):
                print(image_id)
                convert_annotation(image_id, list_file)
    list_file.close()

结果如下:
在这里插入图片描述

from datetime import datetime
import xml.etree.ElementTree as ET
import os


sets = [("images")]
# fixme: 所对应的标签
classes = ["1"]
IMAGE_PATH = "./saves/{}.txt"
DATA_TXT = "./saves/"
IMAGE_WRITE_PATH = "images/{}.jpg"
OPEN_XML_PATH = "labels/{}.xml"


def convert_annotation(image_id, list_file):
    in_file = open(OPEN_XML_PATH.format(image_id))
    tree = ET.parse(in_file)
    root = tree.getroot()
    list_file.write('"'+image_id.split("-")[0]+'"')
    #########################################################################
    # list_file.write('{"name":"' + image_id.split("-")[0] + '",' + '"box":')
    # list_file.write(IMAGE_WRITE_PATH.format(image_id))
    #########################################################################
    for obj in root.iter('object'):
        difficult = obj.find('difficult').text
        cls = obj.find('name').text
        if cls not in classes or int(difficult) == 1:
            continue
        cls_id = classes.index(cls)
        xmlbox = obj.find('bndbox')
        b = (int(xmlbox.find('xmin').text), int(xmlbox.find('ymin').text), int(xmlbox.find('xmax').text), int(xmlbox.find('ymax').text))
        list_file.write(":" + '"(' + (",".join([str(a) for a in b])) + ')"' + ",")
        #########################################################################
        # list_file.write('[('+(",".join([str(a) for a in b])) + ")]},")
        #########################################################################

    # list_file.write("}")
    list_file.write('\n')


for image_set in sets:
    image_ids = open(IMAGE_PATH.format(image_set)).read().strip().split()
    str_date_li = []
    for img_id in image_ids:
        str_date = img_id.split(".")[0].split("-")[0]
        str_date_li.append(str_date)
    li_ti1 = sorted(str_date_li)

    save_data_path = '/'.join(DATA_TXT.split('/')[:-1])
    if not os.path.exists(save_data_path):
        os.makedirs(save_data_path)
    list_file = open(os.path.join(DATA_TXT, "images_final.txt"), 'w')
    for cameraID in li_ti1:
        for image_id in image_ids:
            if image_id.startswith(cameraID):
                print(image_id)
                convert_annotation(image_id, list_file)
    list_file.close()

结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/879654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

穿上App外衣,保持Web灵魂——PWA温故

穿上App的外衣,保持Web的灵魂—— PWA 早在2015年,设计师弗朗西斯贝里曼和Google Chrome的工程师亚历克斯罗素提出“PWA(渐进式网络应用程序)”概念,将网络之长与应用之长相结合,其核心目标就是提升 Web Ap…

无涯教程-Perl - send函数

描述 此函数在SOCKET上发送消息(与recv相反)。如果Socket未连接,则必须提供一个目标以与TO参数进行通信。在这种情况下,将使用sendto系统功能代替系统发送功能。 FLAGS参数由按位或0以及MSG_OOB和MSG_DONTROUTEoptions中的一个或多个形成。 MSG_OOB允许您在支持此概念的Socke…

知兵之将,是国家的宝贝呀

知兵之将,是国家的宝贝呀 【安志强趣讲《孙子兵法》第9讲】 【原文】 故智将务食于敌。食敌一钟,当吾二十钟;芑(qǐ )秆一石(dan),当吾二十石。 【注释】 钟:古代容量单位…

力扣:62. 不同路径(Python3)

题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径&…

MFC编程基础

一、MFC类库简介 ●微软基础类库( Microsoft Foundation Classes, MFC )是Microsoft公司提供的关于Win32 API的C类库集,它定义了一个标准的应用程序框架。 ●借助这个框架,用户可以轻松地开发标准的Windows应用程序。 ●MFC实现了标准的用户…

【论文简介】PP-OCRv1-v4中文字符识别论文概述

相关论文 2009.PP-OCR: A Practical Ultra Lightweight OCR System 2109.PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System 2206.PP-OCRv3: More Attempts for the Improvement of Ultra Lightweight OCR System 2308.PP-OCRv4:目前代码已发布&#xff08…

【计算机视觉|生成对抗】带条件的对抗网络进行图像到图像的转换(pix2pix)

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Image-to-Image Translation with Conditional Adversarial Networks 链接:Image-to-Image Translation with Conditional Adversarial Networks | IEEE Conference Publicati…

EnableAutoConfiguration Attributes should be specified via @SpringBootApplic

在排除数据源加载时,发现这个注解EnableAutoConfiguration(exclude{DataSourceAutoConfiguration.class})会飘红 这是因为在SpringBootApplication中已经有EnableAutoConfiguration注解了; 所以把它改写成以下的格式即可

c# 异步进阶———— paralel

前言 简单整理一下paralel,以上是并行的意思。 正文 我们在工作中常常使用task await 和 async,也就是将线程池进行了封装,那么还有一些更高级的应用。 是对task的封装,那么来看下paralel。 static void Main(string[] args)…

猿辅导Motiff与IXDC达成战略合作,将在UI设计领域推动AI革新更多可能性

近日,“IXDC 2023国际体验设计大会”在北京国家会议中心拉开序幕,3000设计师、1000企业、200全球商业领袖,共襄为期5天的用户体验创新盛会。据了解,此次大会是以“设计领导力”为主题,分享全球设计、科技、商业的前沿趋…

如何手动创建可信任证书DB并配置 nss-config-dir

以阿里云免费邮箱为例 1. 如何下载证书链 证书链说明 使用 gnutls gnutls-cli --print-cert smtp.aliyun.com:465 < /dev/null > aliyun-chain.certs使用 openssl showcerts $ echo -n | openssl s_client -showcerts -connect smtp.aliyun.com:465 | sed -ne /-BE…

PHP8的字符串操作2-PHP8知识详解

今日继续分享《php8的字符串操作》昨天一天都没有写多少&#xff0c;内容多&#xff0c;今天继续&#xff1a; 昨天分享的是1、使用trim()、rtrim()和ltrim()函数去除字符串首尾空格和特殊字符。2、使用strlen()函数和mb_strlen()函数获取字符串的长度。 3、截取字符串 PHP对…

基于强化学习的自动化裁剪CIFAR-10 分类任务(提升模型精度+减少计算量)

基于强化学习的自动化裁剪&#xff0c;提升模型精度的同时减少计算量。 介绍 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RFnHlyQG-1691544546106)(./pic/APT-main.png)] 目前的强化学习工作很多集中在利用外部环境的反馈训练agent&#xff0c…

大数据:什么是数据分析及环境搭建

一、什么是数据分析 当今世界对信息技术的依赖程度在不断加深&#xff0c;每天都会有大量的数据产生&#xff0c;我们经常会感到数据越来越多&#xff0c;但是要从中发现有价值的信息却越来越难。这里所说的信息&#xff0c;可以理解为对数据集处理之后的结果&#xff0c;是从…

【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于逻辑回归算法的数据分类预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 逻辑回归是一种用于二分类问题的统计学习方法&#xff0c;尽管名字中含有“回归”&#xff0c…

ORCA优化器浅析——IMDRelation Storage type of a relation GP6与GP7对比

如上图所示IMDRelation作为Interface for relations in the metadata cache&#xff0c;其定义了Storage type of a relation表的存储类型&#xff0c;如下所示&#xff1a; enum Erelstoragetype {ErelstorageHeap,ErelstorageAppendOnlyCols,ErelstorageAppendOnlyRows,Erels…

如何使用CSS实现一个模态框(Modal)效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现模态框&#xff08;Modal&#xff09;效果⭐ HTML 结构⭐ CSS 样式⭐ JavaScript⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎…

重磅:谷歌发布多平台应用 AI 编程神器

前几天&#xff0c; 谷歌发布了一个多平台应用开发神器&#xff1a;IDX 。 IDX 背靠 AI 编程神器 Codey&#xff0c;支持 React、Vue 等框架&#xff0c;还能补全、解释代码。 更有特色的一点就是&#xff1a;这是一款基于浏览器的开发全栈、用于多平台应用开发的工具。 这款开…

C语言题目的多种解法分享 2之字符串左旋和补充题

前言 有的时候&#xff0c;这个系列专栏中的解法之间并无优劣&#xff0c;只是给大家提供不同的解题思路 我决定将代码实现的过程写成注释&#xff0c;方便大家直接找到对应的函数&#xff0c;只有需要补充说明的知识才会单拿出来强调 这个系列的文章会更的比较慢&#xff0…

级联(数据字典)

二级级联&#xff1a; 一&#xff1a;新建两个Bean 父级&#xff1a; /*** Description 数据字典* Author WangKun* Date 2023/7/25 10:15* Version*/ Data AllArgsConstructor NoArgsConstructor TableName("HW_DICT_KEY") public class DictKey implements Seri…