两点xml

import os
import xml.etree.ElementTree as ET

import cv2

classes = ['holothurian','echinus','scallop','starfish','waterweeds']  # 标注时的标签
def convert_xml_to_yolo(xml_path, image_width, image_height):
    tree = ET.parse(xml_path)
    root = tree.getroot()

    yolo_labels = []

    for object_elem in root.findall('object'):
        name = object_elem.find('name').text
        class_index = classes.index(name)
        xmin = int(object_elem.find('bndbox/xmin').text)
        ymin = int(object_elem.find('bndbox/ymin').text)
        xmax = int(object_elem.find('bndbox/xmax').text)
        ymax = int(object_elem.find('bndbox/ymax').text)

        # Convert bounding box to YOLO format (normalized x,y,w,h)
        x = (xmin + xmax) / 2 / image_width
        y = (ymin + ymax) / 2 / image_height
        width = (xmax - xmin) / image_width
        height = (ymax - ymin) / image_height

        yolo_label = f"{class_index} {x} {y} {width} {height}"
        yolo_labels.append(yolo_label)

    return yolo_labels

def convert_dataset_to_yolo(xml_dir, image_dir, output_dir):
    os.makedirs(output_dir, exist_ok=True)

    for xml_file in os.listdir(xml_dir):
        if xml_file.endswith('.xml'):
            xml_path = os.path.join(xml_dir, xml_file)
            image_name = os.path.splitext(xml_file)[0] + '.jpg'
            image_path = os.path.join(image_dir, image_name)

            image_width, image_height = get_image_size(image_path)
            yolo_labels = convert_xml_to_yolo(xml_path, image_width, image_height)

            yolo_file = os.path.join(output_dir, os.path.splitext(xml_file)[0] + '.txt')
            with open(yolo_file, 'w') as f:
                f.write('\n'.join(yolo_labels))

# def get_image_size(image_path):
#     # Add code to get image width and height
#     # You can use libraries like OpenCV or PIL for this task
#     width = ...  # Get image width
#     height = ...  # Get image height
#     return width, height
def get_image_size(image_path):
    image = cv2.imread(image_path)
    height, width, _ = image.shape
    return width, height
# Usage
xml_dir = r'E:\URPC2020\train\box'
image_dir = r'E:\URPC2020\train\image'
output_dir = r'E:\URPC2020\train\qwe'

convert_dataset_to_yolo(xml_dir, image_dir, output_dir)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA与XML.rar 《Java与XML》(第三版)向您展示如何穿透围绕着XML的宣传迷雾,让XML真正在您的工作中为您所用。它将教您如何使用XML的各种应用程序编程接口(API)、工具和技巧来构建实际的应用程序,为管理从配置文件到网络站点在内的所有信息提供一条全新的途径。 本书的前两章回顾有关XML的基础知识,包括XPath、XSL、DTD以及XML Schema,其余部分专注于讲述如何在Java程序内使用XML。《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定的Java架构(JAXB)相关知识。第三版还彻底重写了有关网络技术的章节,与原先的内容相比,这一部分针对目前引起广泛关注的技术热点进行介绍,例如使用RSS进行内容同步和开发Web 2.0的应用程序。 您将学习到如何为同步的内容创建、读取或者修改RSS feeds,以及如何运用XML、Ajax和Adobe Flash来为下一代的网络站点注入活力。 书中的主题如下: XML基础,包括DTD、命名空间(namespace)、XML Schema和数据格式转换(Transformation) SAX应用程序编程接口,包括处理器接口、过滤器接口和写出接口 DOM应用程序编程接口,包括DOM第2层、第3层和DOM HTML模块 JDOM应用程序编程接口,包括核心接口和XPath支持 StAX应用程序编程接口,包括StAX的工厂方法(factory)、文档生成和XMLPull 使用JAXB进行数据绑定,使用新的JAXB 2.0 annotation 使用RSS进行网络同步和podcasting 表示层的XML应用,主要针对Ajax和Flash应用程序 无论您现在正在还是将来会进行Java程序的开发并且需要用到XML,或者您正在参与新的点对点技术、消息技术以及Web service技术的相关应用或者开发,《Java与XML》(第三版)都是一本不可或缺的图书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值