Foggy_driving数据集下载以及将其转换成VOC数据格式

2023-10-28

Foggy_driving数据集官方下载地址
百度网盘下载链接:https://pan.baidu.com/s/1q4dhnlX-doxlt13Mi-uFZQ
提取码:2ap3
VOC格式的Foggy_driving数据集百度网盘下载链接:https://pan.baidu.com/s/14bIND62U0wyhXLvUy5nJFQ
提取码:ekrn

将Foggy_driving数据集转换成VOC数据格式的python代码如下:

###Foggy_driving中的gtbox标注为txt格式,现工作需要将目标检测标注转为pascal voc格式的标注格式
###Foggy_driving数据集的图片在leftImg8bit中(且分为了test:pedestrian、public和test_extra:pedestrain、web)
###目标检测的标注在bboxGt中(且分为了test:pedestrian、public和test_extra:pedestrain、web)
####所以需要将bounding_box标注放到同一个文件夹中,方便读取
import os, sys
import glob
from PIL import Image

# 图像存储位置
src_img_dir = "D:/XUEXI/CODES/Detections/DATASET/Foggy_Driving/Foggy_Driving/VOC2007/JPEGImages"
# 图像的 ground truth 的 txt 文件存放位置
src_txt_dir = "D:/XUEXI/CODES/Detections/DATASET/Foggy_Driving/bboxGt"
###生成的xml文件想要保存的位置
src_xml_dir = "D:/XUEXI/CODES/Detections/DATASET/Foggy_Driving/Foggy_Driving/VOC2007/Annotations"
### - `bboxGt`
###the bounding box annotations induced from the above semantic annotations, available for all 101 images of the dataset.
# Annotations are encoded as `txt` files, in which each line corresponds to a single object and is formatted as
#    ```
#    {class} {xmin} {ymin} {xmax} {ymax}
#    ```
#    `class` stands for the ID of the class this object belongs to, and the rest four elements encode the extent of
#    its bounding box in 1-based integer pixel coordinates. The 8 relevant classes are encoded with the following IDs:
#    - *car*: 0
#    - *person*: 1
#    - *bicycle*: 2
#    - *bus*: 3
#    - *truck*: 4
#    - *train*: 5
#    - *motorcycle*: 6
#    - *rider*: 7
classes = {'0': 'car','1': 'person','2': 'bicycle', '3': 'bus', '4': 'truck', '5': 'train', '6': 'motorcycle',
           '7': 'rider',}

img_Lists = glob.glob(src_img_dir + '/*.png')

img_basenames = []  # e.g. 100.jpg
for item in img_Lists:
    img_basenames.append(os.path.basename(item))

img_names = []  # e.g. 100
for item in img_basenames:
    temp1, temp2 = os.path.splitext(item)
    img_names.append(temp1)
    image_ids = open(r'D:\XUEXI\CODES\Detections\DATASET\Foggy_Driving\Foggy_Driving\VOC2007\ImageSets\Main\val.txt', 'a')###val.txt需要提前新建
    image_ids.write('% s\n'% (temp1))
    image_ids.close()
for img in img_names:
    im = Image.open((src_img_dir + '/' + img + '.png'))
    width, height = im.size

    # open the crospronding txt file
    ###txt的文件名:pedestrian_20161201_101324.txt  图像的文件名:pedestrian_20161201_101324_leftImg8bit.png  所以img[:-12]
    gt = open(src_txt_dir + '/' + img[:-12] + '.txt').read().splitlines()###{class} {xmin} {ymin} {xmax} {ymax} 此时的gt为List 但是length为1
    # write in xml file
    # os.mknod(src_xml_dir + '/' + img + '.xml')
    xml_file = open((src_xml_dir + '/' + img + '.xml'), 'w')
    xml_file.write('<annotation>\n')
    xml_file.write('    <folder>VOC2007</folder>\n')
    xml_file.write('    <filename>' + str(img) + '.png' + '</filename>\n')
    xml_file.write('    <size>\n')
    xml_file.write('        <width>' + str(width) + '</width>\n')
    xml_file.write('        <height>' + str(height) + '</height>\n')
    xml_file.write('        <depth>3</depth>\n')
    xml_file.write('    </size>\n')

    # write the region of image on xml file
    for img_each_label in gt:
        spt = img_each_label.split(' ')  # 这里如果txt里面是以逗号‘,’隔开的,那么就改为spt = img_each_label.split(',')。
        xml_file.write('    <object>\n')
        xml_file.write('        <name>' + str(classes[spt[0]]) + '</name>\n')
        xml_file.write('        <pose>Unspecified</pose>\n')
        xml_file.write('        <truncated>0</truncated>\n')
        xml_file.write('        <difficult>0</difficult>\n')
        xml_file.write('        <bndbox>\n')
        xml_file.write('            <xmin>' + str(spt[1]) + '</xmin>\n')
        xml_file.write('            <ymin>' + str(spt[2]) + '</ymin>\n')
        xml_file.write('            <xmax>' + str(spt[3]) + '</xmax>\n')
        xml_file.write('            <ymax>' + str(spt[4]) + '</ymax>\n')
        xml_file.write('        </bndbox>\n')
        xml_file.write('    </object>\n')

    xml_file.write('</annotation>')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Foggy_driving数据集下载以及将其转换成VOC数据格式 的相关文章

随机推荐

  • 【python】mac+appium获取安卓app的appPackage和appActivity

    本文介绍两种亲测最简单有效的办法 方法一 如果你有一台mac本和win的电脑 但是想用mac测安卓app 在win的电脑上解压后缀为 apk的文件 用notepad 等打开解压后文件夹中的AndroidManifest xml即可看到app
  • 内测体验:JetBrains面向未来的Fleet编辑器是什么+究竟怎样 使用初体验+与vsc对比

    异想之旅 本人原创博客完全手敲 绝对非搬运 全网不可能有重复 本人无团队 仅为技术爱好者进行分享 所有内容不牵扯广告 本人所有文章仅在CSDN 掘金和个人博客 一定是异想之旅域名 发布 除此之外全部是盗文 引言 上个月 我在看到某公众号推广
  • Connected Components?【Codeforces 920E】【补图的联通块的个数】

    Educational Codeforces Round 37 Rated for Div 2 E 怎么说呢 跟这道题是一样的 这道题就变得很模板了 原题 include
  • Unity2D input.GetAxis()与input.GetAxisRaw()的相同点、区别以及简单用法

    目录 前言 一 input GetAxis 与input GetAxisRaw 的相同点 区别 二 简单用法 1 input GetAxis 2 input GetAxisRaw 三 总结 前言 input GetAxis 与input G
  • v-model的使用

    目录 一 v model 的原理 二 v model 结合radio 使用 三 v model 结合checkbox 类型单选使用 四 v model 结合checkbox 多选使用 五 v model 结合select 使用 六 v mo
  • 消灭兔子【贪心+堆】

    题目链接 51nod 1191 消灭兔子 兔子这么可爱 怎么能消灭呢 我们可以用贪心的办法来解决这个问题 因为每个箭只能使用一次 所以 我们将兔子血量从高往低排列 先做掉高血量兔子 然后再看低血量兔子 保证了伤害高但是价值小的武器假如在之前
  • 编程实现RSA数字签名

    一 实验目的 理解RSA数字签名 并运用编程实现RSA数字签名 二 实验过程 1 学习RSA算法及RSA数字签名算法流程 2 RSA数字签名原理 当发送方想要给接收方发送数据 并想进行数字签名的时候 发送方只需要利用自己的私钥 对数据进行数
  • python进阶:线程、进程和协程

    前言 线程 进程和协程都是实现多任务 同一时间可以做多个事情就叫做多任务 的方法 并发 一段时间内做不同的事情 比如一个人吃饭喝水 吃的时候不能喝 喝的时候不能吃 只有在一段时间 吃了再喝或者喝了在吃 并行 同一时间做不同的事情 比如边听音
  • 谈乱序执行和内存屏障

    10多年前的程序员对处理器乱序执行和内存屏障应该是很熟悉的 但随着计算机技术突飞猛进的发展 我们离底层原理越来越远 这并不是一件坏事 但在有些情况下了解一些底层原理有助于我们更好的工作 比如现代高级语言多提供了多线程并发技术 如果不深入下来
  • [Linux]Kali安装Deepin-wine-WeChat

    Kali版本 2022 2 KDE环境 实体机 wget O https deepin wine i m dev setup sh sh apt get install com qq weixin deepin 其他的QQ TIM登录后会崩
  • python PyAV库解析H264视频流及保存指定帧

    PyAV是一个视频处理库 可用于读取 写入和处理视频 要使用PyAV读取视频关键帧 首先需要安装PyAV 可以使用以下命令安装PyAV pip install av 安装完成后 您可以使用以下代码打开视频文件并读取关键帧 import av
  • python数据可视化第八章使用matplotlib绘制高级图表

    使用matplotlib绘制高级图表 1 绘制高等图 等高线图是地形图上高程相等的相邻各点所连成的j闭合曲线 它会将地面上海拔高度相同的点连成环线 之后将环线垂直投影到某一水平面上 并按照 定的比例缩绘到图纸上 常见于山谷 山峰或梯度下降算
  • CloudOS:物联网开发平台,云上开发,边端交付

    什么是物联网 物联网 Internet of Things 简称IoT 是指通过各种信息传感器 射频识别技术 全球定位系统 红外感应器 激光扫描器等各种装置与技术 实时采集任何需要监控 连接 互动的物体或过程 采集其声 光 热 电 力学 化
  • iOS开发中,使用PC查看/修改沙盒文件

    简介 在进行iOS开发中 APP尤其是游戏 在沙盒中可以存放游戏资源包或者数据 例如Json文件 AssetBundle包 在使用服务器下载资源包 存放到本地沙盒中 可以大大减少APP本身的大小 当然 在调试的时候 如果频繁的更换服务器的A
  • 处理告警“ warning #69-D integer conversion resulted in truncation”的方法

    今天分享一个常见的语法告警 就是实参与形参的类型参数对于不上 错误之处 首先我们先看一下告警提示 告警 c 49 warning 69 D integer conversion resulted in truncation 其翻译过来意思就
  • 二 动态SQL和多对一,一对多

    二 动态SQL和多对一 一对多 10 多对一处理 测试环境搭建 按照查询嵌套处理 子查询 按照结果嵌套处理 联表查询 11 一对多 按照结果嵌套处理 按照查询嵌套处理 小结 12 动态 SQL IF choose when otherwis
  • xpath下载安装——Python爬虫xpath插件下载安装(2023.8亲测可用!!)

    目录 1 免费下载插件链接 若失效评论区留言发送最新链接 2023 7亲测可用 2 安装插件 1 打开chrome浏览器页面 点击 右上角三个点 gt 扩展程序 gt 管理拓展程序 若没找到点更多工具 2 打开右上角开发者模式 3 将刚刚下
  • 关于maven创建java-web工程加载过慢如何解决问题

    如何解决maven创建java web工程加载过慢如何解决问题 在创建项目时在这个界面中 添加设置一组变量archetypeCatalog internal 然后点击完成继续创建就可以了 但是这样做每次创建项目都要重复添加 很麻烦 如果大家
  • Spring实现封装自定义注解@Trimmed清除字符串前后的空格

    在Spring中实现字符串清除的方法有很多 原生方法String自带trim 方法 或者使用StringUtils提供的trim 方法 通常可以将上面的方式封装成自定义注解的形式去实现来节省更多的业务代码 Trimmed java impo
  • Foggy_driving数据集下载以及将其转换成VOC数据格式

    Foggy driving数据集官方下载地址 百度网盘下载链接 https pan baidu com s 1q4dhnlX doxlt13Mi uFZQ 提取码 2ap3 VOC格式的Foggy driving数据集百度网盘下载链接 ht