目标检测任务数据集的数据增强中,图像垂直翻转和xml标注文件坐标调整

这篇具有很好参考价值的文章主要介绍了目标检测任务数据集的数据增强中,图像垂直翻转和xml标注文件坐标调整。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:         数据集的数据增强中,有时需要用到图像垂直翻转的操作,图像垂直翻转后,对应的xml标注文件也需要做坐标的调整。   解决方法:         使用python+opencv+import xml.etree.ElementTree对图像垂直翻转和xml标注文件坐标调整。代码如下:

import cv2
import os
import glob
import xml.etree.ElementTree as et


def flip_images(source_dir):
    images_list = glob.glob(os.path.join(source_dir, "*.jpg"))
    index = 0
    for image_path in images_list:
        image = cv2.imread(image_path)
        flip_image = cv2.flip(image,0)
        cv2.imwrite(image_path.replace(".jpg", "_flip.jpg"), flip_image)
        tree_ = et.ElementTree()
        tree_.parse(image_path.replace(".jpg", ".xml"))

        root = et.Element("annotation")
        folder = et.SubElement(root, "folder")
        folder.text = "images"
        filename = et.SubElement(root, "filename")
        filename.text = tree_.find(".//filename").text.replace(".jpg", "_flip.jpg")
        path = et.SubElement(root, "path")
        path.text = "/home/mapgoo/test"
        source = et.SubElement(root, "source")
        database = et.SubElement(source, "database")
        database.text = "Unknown"
        size = et.SubElement(root, "size")
        width = et.SubElement(size, "width")
        width.text = tree_.find(".//width").text
        height = et.SubElement(size, "height")
        height.text = tree_.find(".//height").text
        depth = et.SubElement(size, "depth")
        depth.text = "3"
        segmented = et.SubElement(root, "segmented")
        segmented.text = "0"

        for bndbox in tree_.findall(".//object"):
            xmin = bndbox.find(".//xmin")
            ymin = bndbox.find(".//ymin")
            xmax = bndbox.find(".//xmax")
            ymax = bndbox.find(".//ymax")
            xmin_text = xmin.text
            ymin_text = ymin.text
            xmax_text = xmax.text
            ymax_text = ymax.text

            object_ = et.SubElement(root, "object")
            name = et.SubElement(object_, "name")
            name.text = bndbox.find("name").text
            pose = et.SubElement(object_, "pose")
            pose.text = "Unspecified"
            truncated = et.SubElement(object_, "truncated")
            truncated.text = "0"
            difficult = et.SubElement(object_, "difficult")
            difficult.text = "0"
            bndbox = et.SubElement(object_, "bndbox")
            xmin = et.SubElement(bndbox, "xmin")
            xmin.text = xmin_text
            ymin = et.SubElement(bndbox, "ymin")
            ymin.text = str(image.shape[0] - int(ymax_text))
            xmax = et.SubElement(bndbox, "xmax")
            xmax.text = xmax_text
            ymax = et.SubElement(bndbox, "ymax")
            ymax.text = str(image.shape[0] - int(ymin_text))

        tree = et.ElementTree(root)
        tree.write(image_path.replace(".jpg", "_flip.xml"), encoding="utf-8")
        print(image_path, index)
        index += 1


if __name__ == '__main__':
    source_dir = "/home/Desktop/test"
    flip_images(source_dir)

 使用以上代码需要修改原图像和标注文件所在文件夹路径(source_dir)。亲测可用。 

文章来源地址https://www.toymoban.com/news/detail-668233.html

到了这里,关于目标检测任务数据集的数据增强中,图像垂直翻转和xml标注文件坐标调整的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV的remap实现图像垂直翻转

    以下是完整的代码:

    2024年02月13日
    浏览(48)
  • 伪装目标检测中数据集的标注格式:COCO和VOC

    1.OSFormer中提供的COD10K的json格式,是coco的格式,但由于伪装目标检测任务的特殊性,标注信息中还有一个segmentation段 首先将一整个json文件分解: 然后转化为VOC格式: 这样生成的xml文件,没有之前COD10K标注的segmentation信息,还需要进一步考虑,在转换为xml的脚本中加上识别

    2024年04月27日
    浏览(36)
  • 【课程介绍】OpenCV 基础入门教程:图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪

    [ 专栏推荐 ] 😃 《视觉探索: OpenCV 基础入门教程》 😄 ❤️【简介】: Opencv 入门课程适合初学者,旨在介绍 Opencv 库的基础知识和核心功能。课程包括图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪等内容。学

    2024年02月16日
    浏览(39)
  • YOLOv8改进 | 主干篇 | 低照度图像增强网络SCINet改进黑暗目标检测(全网独家首发)

    本文给大家带来的改进机制是低照度图像增强网络SCINet, SCINet(自校正照明网络) 是一种专为 低光照图像增强设计 的框架。它通过 级联照明学习过程和权重共享机制 来处理图像,优化了照明部分以提升图像质量。我将该网络集成在YOLOv8的主干上针对于图像的输入进行增强

    2024年01月22日
    浏览(43)
  • 睿智的目标检测64——目标检测中的MixUp数据增强方法

    哈哈哈!我再来一次数据增强! https://github.com/bubbliiiing/object-detection-augmentation MixUp数据增强方法在最新的几个Yolo算法中得到了广泛的应用,特别在YoloX中,s、m、l、x四个型号的网络都使用了MixUp数据增强。nano和tiny由于模型的拟合能力一般没有使用MixUp,但也说明了MixUp具有强

    2024年02月01日
    浏览(34)
  • 目标检测笔记(十二):如何通过界面化操作YOLOv5完成数据集的自动标注

    通过界面化操作YOLOv5完成数据集的自动标注的意义在于简化数据标注的流程,提高标注的效率和准确性。 传统的数据集标注通常需要手动绘制边界框或标记关键点,这个过程费时费力且容易出错。而通过界面化操作YOLOv5完成数据集的自动标注,可以实现自动识别目标并生成标

    2024年02月11日
    浏览(24)
  • PyTorch: 基于【MobileNet V2】处理MNIST数据集的图像分类任务【准确率99%+】

    PyTorch: 基于【VGG16】处理MNIST数据集的图像分类任务【准确率98.9%+】 在深度学习和计算机视觉的世界里,MNIST数据集就像一颗璀璨的明珠,被广大研究者们珍视并广泛使用。这个数据集包含了大量的手写数字图像,为图像分类任务提供了丰富的素材。今天,我们将带您一同探索

    2024年02月04日
    浏览(35)
  • 目标检测: 一文读懂 Mosaic 数据增强

    在 Yolo-V4 、 Yolo-V5 中,都有一个很重要的技巧,就是 Mosaic 数据增强,这种数据增强方式简单来说就是把4张图片,通过随机缩放、随机裁减、随机排布的方式进行拼接。 Mosaic 有如下优点: (1)丰富数据集:随机使用4张图片,随机缩放,再随机分布进行拼接,大大丰富了检

    2024年02月08日
    浏览(25)
  • 生成用于目标检测任务的合成图像教程:使用Blender、Python和3D资产

    生成用于目标检测任务的合成图像教程:使用Blender、Python和3D资产 缺少足够的训练数据是当前深度学习面临的一个主要问题。自动生成带有注释的合成图像是计算机视觉任务的一个有前途的解决方案。本文将首先概述合成图像数据的一些图像生成技术,然后生成一个无需手动

    2024年03月27日
    浏览(42)
  • 基于Kitti数据集的智能驾驶目标检测系统(PyTorch+Pyside6+YOLOv5模型)

    摘要:基于Kitti数据集的智能驾驶目标检测系统可用于日常生活中检测与定位行人(Pedestrian)、面包车(Van)、坐着的人(Person Sitting)、汽车(Car)、卡车(Truck)、骑自行车的人(Cyclist)、有轨电车(Tram)以及其他目标(Misc),利用深度学习算法可实现图片、视频、摄像

    2024年02月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包