crowhuman和object365比赛里的json、odgt、txt数据解析

2023-11-10

crowhuman annotation_val.odgt标签解析

import cv2
import json

data = {"ID": "273278,600e5000db6370fb", "gtboxes": [{"fbox": [67, 60, 333, 810], "tag": "person", "hbox": [203, 68, 86, 93], "extra": {"box_id": 0, "occ": 0}, "vbox": [67, 60, 333, 740], "head_attr": {"ignore": 0, "occ": 1, "unsure": 0}}, {"fbox": [438, 205, 175, 541], "tag": "person", "hbox": [509, 233, 50, 66], "extra": {"box_id": 1, "occ": 0}, "vbox": [438, 205, 175, 541], "head_attr": {"ignore": 0, "occ": 0, "unsure": 0}}, {"fbox": [568, 208, 194, 550], "tag": "person", "hbox": [606, 218, 61, 69], "extra": {"box_id": 2, "occ": 1}, "vbox": [576, 212, 185, 543], "head_attr": {"ignore": 0, "occ": 0, "unsure": 0}}, {"fbox": [637, 215, 139, 393], "tag": "person", "hbox": [676, 220, 40, 53], "extra": {"box_id": 3, "occ": 1}, "vbox": [670, 216, 108, 389], "head_attr": {"ignore": 0, "occ": 0, "unsure": 0}}, {"fbox": [776, 382, 25, 220], "tag": "mask", "hbox": [776, 382, 25, 220], "extra": {"ignore": 1}, "vbox": [776, 382, 25, 220], "head_attr": {}}]}
 
img=cv2.imread("test.jpg")
print(data["ID"])
for obj in data["gtboxes"]:
    draw_0 = cv2.rectangle(img, (obj['hbox'][0], obj['hbox'][1]), (obj['hbox'][0]+obj['hbox'][2], obj['hbox'][1]+obj['hbox'][3]), (255, 0, 0), 1)
    
    # print('head_attr',obj['head_attr'])
    draw_0 = cv2.rectangle(img, (obj['fbox'][0], obj['fbox'][1]),(obj['fbox'][0] + obj['fbox'][2], obj['fbox'][1] + obj['fbox'][3]), (0, 255, 0), 1)
    
    draw_0 = cv2.rectangle(img, (obj['vbox'][0], obj['vbox'][1]),(obj['vbox'][0] + obj['vbox'][2], obj['vbox'][1] + obj['vbox'][3]), (0, 0,255), 1)
    # print('extra',obj['extra'])
 
cv2.imshow("test",img)
cv2.waitKey(0)

提取annotation_val.odgt里面的fbox,并输出result.txt固定的格式。
annotation_val.odgt格式基本如下:

{“ID”: “273271,c9db000d5146c15”, “gtboxes”: [{“fbox”: [72, 202, 163, 503], “tag”: “person”, “hbox”: [171, 208, 62, 83], “extra”: {“box_id”: 0, “occ”: 0}, “vbox”: [72, 202, 163, 398], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [199, 180, 144, 499], “tag”: “person”, “hbox”: [268, 183, 60, 83], “extra”: {“box_id”: 1, “occ”: 0}, “vbox”: [199, 180, 144, 420], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [310, 200, 162, 497], “tag”: “person”, “hbox”: [363, 219, 54, 71], “extra”: {“box_id”: 2, “occ”: 0}, “vbox”: [310, 200, 162, 400], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [417, 182, 139, 518], “tag”: “person”, “hbox”: [455, 190, 53, 78], “extra”: {“box_id”: 3, “occ”: 0}, “vbox”: [417, 182, 139, 418], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [429, 171, 224, 511], “tag”: “person”, “hbox”: [537, 187, 55, 73], “extra”: {“box_id”: 4, “occ”: 1}, “vbox”: [534, 171, 113, 431], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [543, 178, 262, 570], “tag”: “person”, “hbox”: [602, 186, 71, 93], “extra”: {“box_id”: 5, “occ”: 0}, “vbox”: [543, 178, 257, 422], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}]}
{“ID”: “273271,1c72c000a2ee47d5”, “gtboxes”: [{“fbox”: [23, 230, 228, 597], “tag”: “person”, “hbox”: [125, 233, 82, 110], “extra”: {“box_id”: 0, “occ”: 1}, “vbox”: [62, 234, 186, 487], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [162, 249, 156, 558], “tag”: “person”, “hbox”: [213, 259, 69, 87], “extra”: {“box_id”: 1, “occ”: 1}, “vbox”: [198, 256, 111, 466], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [271, 204, 167, 561], “tag”: “person”, “hbox”: [338, 210, 63, 92], “extra”: {“box_id”: 2, “occ”: 0}, “vbox”: [271, 204, 167, 516], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [384, 191, 207, 583], “tag”: “person”, “hbox”: [384, 191, 207, 529], “extra”: {“box_id”: 3, “occ”: 1}, “vbox”: [401, 193, 155, 530], “head_attr”: {“ignore”: 1, “occ”: 0, “unsure”: 0}}, {“fbox”: [448, 187, 204, 575], “tag”: “person”, “hbox”: [537, 223, 72, 94], “extra”: {“box_id”: 4, “occ”: 0}, “vbox”: [448, 187, 204, 533], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [595, 183, 167, 589], “tag”: “person”, “hbox”: [657, 193, 73, 98], “extra”: {“box_id”: 5, “occ”: 1}, “vbox”: [625, 184, 119, 537], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [724, 165, 183, 652], “tag”: “person”, “hbox”: [752, 180, 93, 108], “extra”: {“box_id”: 6, “occ”: 1}, “vbox”: [735, 180, 169, 539], “head_attr”: {“ignore”: 0, “occ”: 0, “unsure”: 0}}, {“fbox”: [0, 308, 164, 416], “tag”: “mask”, “hbox”: [0, 308, 164, 416], “extra”: {“ignore”: 1}, “vbox”: [0, 308, 164, 416], “head_attr”: {}}]}

输出result.txt格式如下:

{“height”:600,“ID”:“273271,c9db000d5146c15”,“width”:800,“dtboxes”:[{“socre”:1.0,“tag”:1,“box”:[72, 202, 235, 705]},{“socre”:1.0,“tag”:1,“box”:[199, 180, 343, 679]},{“socre”:1.0,“tag”:1,“box”:[310, 200, 472, 697]},{“socre”:1.0,“tag”:1,“box”:[417, 182, 556, 700]},{“socre”:1.0,“tag”:1,“box”:[429, 171, 653, 682]},{“socre”:1.0,“tag”:1,“box”:[543, 178, 805, 748]}]}
{“height”:720,“ID”:“273271,1c72c000a2ee47d5”,“width”:960,“dtboxes”:[{“socre”:1.0,“tag”:1,“box”:[23, 230, 251, 827]},{“socre”:1.0,“tag”:1,“box”:[162, 249, 318, 807]},{“socre”:1.0,“tag”:1,“box”:[271, 204, 438, 765]},{“socre”:1.0,“tag”:1,“box”:[384, 191, 591, 774]},{“socre”:1.0,“tag”:1,“box”:[448, 187, 652, 762]},{“socre”:1.0,“tag”:1,“box”:[595, 183, 762, 772]},{“socre”:1.0,“tag”:1,“box”:[724, 165, 907, 817]},{“socre”:1.0,“tag”:1,“box”:[0, 308, 164, 724]}]}

import os
import cv2
with open((os.path.join('annotation_val.txt')), 'r') as f:
    data=f.readlines()
    for line in data:
        odom=line.split("]}")
        data_dict = eval(odom[0]+"]}")
        str_ = ""
        for obj in data_dict["gtboxes"]:
            box = [obj['fbox'][0],obj['fbox'][1],obj['fbox'][0]+obj['fbox'][2],obj['fbox'][1]+obj['fbox'][3]]
            str_ = str_+ '{"score": 1.0, "tag": 1, \"box\": %s}, '%(str(box))
            #print(str_)

        #print(data_dict["ID"])
        img = cv2.imread(data_dict["ID"]+".jpg")
        str_height = str(img.shape[0])
        str_width = str(img.shape[1])

        str_all = "{"+"\"height\": "+str_height+", \"ID\": \""+data_dict["ID"]+"\", \"width\": "+str_width+", \"dtboxes\": ["+str_[:-2]+"]}"+"\n"
        #print(str_all)

        with open("hhh.txt", "a") as f:
            f.write(str_all)

object365 json文件提取
result.json类似于一个这样的列表

[{“image_id”: 354609, “area”: 9945.156009311546, “category_id”: 21, “id”: 0, “iscrowd”: 0, “bbox”: [133.8088989172, 178.6294555648, 80.1972656534, 124.0086669824]}, {“image_id”: 354609, “area”: 13467.531777104436, “category_id”: 3, “id”: 1, “iscrowd”: 0, “bbox”: [289.74798586220004, 215.75781248, 127.72149654100002, 105.44451906559996]}, {“image_id”: 354609, “area”: 54688.424399724776, “category_id”: 3, “id”: 2, “iscrowd”: 0, “bbox”: [339.4999999909, 279.6185912832, 258.41333009830004, 211.6315918336]}]

test_data.json类似于一个这样的列表,经过一下程序得到一个字典再加上[]即为列表

[{“image_id”: 354609, “category_id”: 21, “bbox”: [133.8088989172, 178.6294555648, 80.1972656534, 124.0086669824], “score”: 1.0},{“image_id”: 354609, “category_id”: 3, “bbox”: [289.74798586220004, 215.75781248, 127.72149654100002, 105.44451906559996], “score”: 1.0},{“image_id”: 354609, “category_id”: 3, “bbox”: [339.4999999909, 279.6185912832, 258.41333009830004, 211.6315918336], “score”: 1.0},{“image_id”: 354609, “category_id”: 7, “bbox”: [495.3330078154, 234.7993164288, 45.82702636130006, 64.92156979200001], “score”: 1.0}]

import json

image_id = []
category_id = []
bbox = []
score = []

with open('result.json', 'r') as f:
    data = json.load(f)
    for i in range(0,len(data)):
        image_id.append(data[i]["image_id"])
        category_id.append(data[i]["category_id"])
        bbox.append(data[i]["bbox"])
        score.append(1.0)

    print("提取完成")

with open('test_data.json', 'w') as json_file:
    for i in range(0,len(data)):
        dict = {"image_id":image_id[i],"category_id":category_id[i],"bbox":bbox[i],"score":score[i]}
        json_str = json.dumps(dict)+","
        json_file.write(json_str)
    print("写入完成")

txt读取和写入

import os

with open((os.path.join('result.txt')), 'r') as f:
    data=f.readlines()
    for line in data:
        odom=line.split(" ")
        tmp_str = "".join(odom)

with open((os.path.join('result_out.txt')), 'w') as f:
    f.write(tmp_str)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

crowhuman和object365比赛里的json、odgt、txt数据解析 的相关文章

  • 如何在Python中流式传输和操作大数据文件

    我有一个相对较大 1 GB 的文本文件 我想通过跨类别求和来减小其大小 Geography AgeGroup Gender Race Count County1 1 M 1 12 County1 2 M 1 3 County1 2 M 2
  • 使用 pygame 显示 unicode 符号

    我检查了其他答案 但不明白为什么我的代码错误地显示 This is what I currently see https i stack imgur com 8tNIK png 这是关于文本渲染的相关代码 font pygame font
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • Django 的 request.FILES 出现 UnicodeDecodeError

    我在视图调用中有以下代码 def view request body u for filename f in request FILES items body body Filename filename n f read n 在某些情况下
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • Jython 和 SAX 解析器:允许的实体不超过 64000 个?

    我做了一个简单的测试xml saxJython 中的解析器在处理大型 XML 文件 800 MB 时遇到以下错误 Traceback most recent call last File src project xmltools py li
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • 在系统托盘中隐藏 tkinter 窗口 [重复]

    这个问题在这里已经有答案了 我正在制作一个程序来提醒我朋友的生日 这样我就不会忘记祝福他们 为此 我制作了两个 tkinter 窗口 1 First one is for entering name and birth date 2 Sec
  • 在 Django 查询中使用 .extra(select={...}) 引入的值上使用 .aggregate() ?

    我正在尝试计算玩家每周玩游戏的次数 如下所示 player game objects extra select week WEEK games game date aggregate count Count week 但姜戈抱怨说 Fiel
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk
  • 多个对象以某种方式相互干扰[原始版本]

    我有一个神经网络 NN 当应用于单个数据集时 它可以完美地工作 但是 如果我想在一组数据上运行神经网络 然后创建一个新的神经网络实例以在不同的数据集 甚至再次同一组数据 上运行 那么新实例将产生完全错误的预测 例如 对 XOR 模式进行训练
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • 无人机姿态融合——EKF

    联系方式 860122112 qq com 一 实验目的 使用惯性测量单元IMU和磁场传感器 磁力计 的信息 通过EKF对四旋翼无人机进行姿态融合 二 实验环境 ROS机器人操作系统 三 实验步骤 1 安装hector quadrotor
  • 3ddfa v2 实测 笔记

    目录 2d人脸关键点opencv 演示代码 不带smooth emoca 3d生成 官方开源代码相关 学习笔记
  • OS常见面试题

    常见OS面试 常见面试题 进程和线程的区别 死锁的必要条件 怎么处理死锁 Window内存管理方式 段存储 页存储 段页存储 进程的几种状态 IPC几种通信方式 什么是虚拟内存 虚拟地址 逻辑地址 线性地址 物理地址的区别 1 进程和线程
  • jupyter问题 tensorflow问题

    1 tensorflow GPU安装时间的版本问题 python cuDNN CUDA版本要对应 2 cuda 安装命令 3 当新创建conda环境时 在jupyter中使用需要进行一下步骤 4 tensorflow gpu3 0版本需要控
  • 【计算机网络】8、telnet 协议 与 golang、rust 实现

    文章目录 一 背景 二 rust 实现 三 go 实现 一 背景 http 和 ftp 可以获取远端 server 的文件 而 telnet 是基于 tcp 的协议 其可以普通用户的特权身份登录 server 并获取其制定 应用或数据的权限
  • vue路由守卫(一张图搞清)

    Vue路由守卫主要分为 全局路由守卫 路由独享守卫 组件内部守卫 常常用来拦截页面 比如新用户下单时未登录时弹出登录页面 比如一些页面需要使用token值来进行操作 判断没有token值就弹出登录或者跳到登录页面 重新获取token 导航守
  • javaWeb项目如何添加jar包

    java普通项目引入jar包就可以了 但是针对javaWeb项目却无效 添加jar包的方法是找到apache tomcat目录 将jar包放到lib目录下 只针对使用的是apache tomcat服务器的javaweb项目 使用其它服务器的
  • 计算机及网络维护知识,电脑网络维护需要知道哪些知识?

    1 首先是网线 双绞线 连接线的制作 双绞线制作有568A和568B两个标准 日常以568B标准较常用 568B标准按颜色排序为 1 橙白 2 橙 3 绿白 4 蓝 5 蓝白 6 绿 7 棕白 8 棕 使用568A标准可将568B标准中橙
  • 在Linux中安装nodejs(已编译版安装方法)

    背景 本篇文章是继 在Linux中安装nodejs 未编译版安装方法 的续集 两种方法我更推荐这种 简单 连我一个小白都会的方法 废话不多说 上干货 安装步骤 第一步 下载安装包 你可以在这里下载好了往服务器上传 也可以执行如下命令 wge
  • 2022个人投资者投资行为分析报告

    导读 报告 发现 在经历了2022年投资市场的激荡起伏后 超半数受访者对未来1 2年的投资市场仍持乐观态度 但在行动上将更为谨慎 2022年的金融市场中 超半数投资者的投资风格为稳健型 对明星基金经理 历史高收益基金追捧热情明显回落 关注公
  • Abp Framework中文文档上线

    感谢 ABP框架中国小组 给我们带来的ABP中文翻译 Web 为方便广大学习爱好者随时查阅 现推出了Gitbook风格的在线阅读文档 http www webplus org cn document abp 反馈交流 http www we
  • php禁止浏览器记住密码,关于PHP中浏览器禁止Cookie后,Session是否能继续使用

    今天去面试 被问到浏览器禁止了Cookie后 Session还能继续使用吗 当时很自信的说当然不能用了 把之前了解到的信息负复述了一边 面试官很是无奈 很显然失败的面试 回来后找了度娘 果不其然 以后面试的每个问题都需要认真对待啊 关于PH
  • 27. Pandas

    Hi 大家好 我是茶桁 先跟小伙伴们打个招呼 今天这节课呢 就是我们Python基础课程的最后一节课了 在本节课之前 我们讲解了Python的基础 介绍了两个第三方库 而今天一样会介绍一个第三方库 Pandas 虽然是最后一节课了 但是本节
  • Linux搭建LAMP、LNMP环境;论坛的搭建;

    目录 LAMP的介绍 LAMP服务的配置 LAMP的介绍 LAMP 是一个缩写 它指一组通常一起使用来运行动态网站或者服务器的自由软件 Linux 操作系统 Apache 网页服务器 MySQL 数据库管理系统 或者数据库服务器 PHP 和
  • Qt通过QStorageInfo获取磁盘大小,linux下可根据路径获取挂接磁盘的大小,而非获取所有磁盘大小的总和

    QStorageInfo类提供了系统当前挂载的存储和驱动器的相关信息 包括它们的空间 挂载点 标签名 文件系统名 可以创建一个QStorageInfo对象 使用其静态方法mountedVolumes 来得到当前系统中挂载的所有文件系统的列表
  • 推荐一个golang压缩、解压库unarr

    github地址 github com gen2brain go unarr 使用很方便 解压例子如下 func ExtractFile file string error a err unarr NewArchive file if er
  • 计算机竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉

    文章目录 0 前言 2 先上成果 3 多目标跟踪的两种方法 3 1 方法1 3 2 方法2 4 Tracking By Detecting的跟踪过程 4 1 存在的问题 4 2 基于轨迹预测的跟踪方式 5 训练代码 6 最后 0 前言 优质
  • 一个多开发虚拟环境的命令行工具——asdf

    asdf是一个不错的多开发虚拟环境搭建工具 玩Ruby的时候无意发现的 Ruby常用的虚拟环境工具有RVM和Rbenv 但是现在的开发都会包含python和nodejs之类的多语言开发环境 这个工具虽然不如Docker强大 但是也足够个人开
  • SpringBoot整合Nacos实现动态配置数据源

    1 Nacos介绍 是不是还有好多小伙伴不知道 nacos 是啥 nacos 是阿里巴巴的一个开源项目 官网给它的定义是 一个更易于构建云原生应用的动态服务发现 配置管理和服务管理平台 SpringBoot SpringCloud项目部署运
  • crowhuman和object365比赛里的json、odgt、txt数据解析

    crowhuman annotation val odgt标签解析 import cv2 import json data ID 273278 600e5000db6370fb gtboxes fbox 67 60 333 810 tag