【ann2coco】图像label转coco格式的JSON

目录

🍋🍋需求

🍋🍋coco格式

🍋🍋python代码实现

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--


🍋🍋需求

        单波段灰度图label转coco格式的JSON文件

 

🍋🍋coco格式

        COCO 数据集的格式是基于 JSON(JavaScript Object Notation)的,使用一个主 JSON 文件来描述整个数据集,以及其他辅助的 JSON 文件来存储图像和标注等信息。在 COCO 数据集格式中,主要的 JSON 文件通常被称为 "instance" 文件,它包含了以下重要字段:

  •  "info" 字段:用于描述数据集的基本信息,例如名称、版本、年份等。
  • "license" 字段:包含了数据集使用的许可证信息,可以指定数据集的使用和共享方式。
  • "images" 字段:存储了每张图像的相关信息,包括图像的唯一标识符、文件名、高度、宽度等。
  • "annotations" 字段:记录了每个图像的标注信息,每个标注包含了一些必要的信息,如标注的唯一标识符、所属图像的标识符、类别、边界框信息等。
  • "categories" 字段:定义了数据集中所有类别的信息,包括类别的唯一标识符、名称等。 

                       

        coco格式的JSON文件包含了一个COCO数据集的基本信息。它包括了数据集的信息(年份、版本、描述等)、许可证信息、图像信息(宽度、高度、文件名等)、标注信息(标注ID、图像ID、类别ID、边界框、面积等)以及类别信息(类别ID、类别名称、超类别等)。

        COCO数据格式的JSON文件示例:

{
  "info": {
    "year": 2021,
    "version": "1.0",
    "description": "COCO Dataset Example",
    "contributor": "John Doe",
    "url": "http://example.com",
    "date_created": "2021-06-01"
  },
  "licenses": [
    {
      "id": 1,
      "name": "License 1",
      "url": "http://example.com/license1"
    },
    {
      "id": 2,
      "name": "License 2",
      "url": "http://example.com/license2"
    }
  ],
  "images": [
    {
      "id": 1,
      "width": 500,
      "height": 400,
      "file_name": "image1.jpg",
      "license": 1,
      "date_captured": "2021-01-01"
    },
    {
      "id": 2,
      "width": 800,
      "height": 600,
      "file_name": "image2.jpg",
      "license": 2,
      "date_captured": "2021-02-01"
    }
  ],
  "annotations": [
    {
      "id": 1,
      "image_id": 1,
      "category_id": 1,
      "bbox": [100, 100, 200, 200],
      "area": 40000,
      "iscrowd": 0
    },
    {
      "id": 2,
      "image_id": 1,
      "category_id": 2,
      "bbox": [300, 200, 150, 250],
      "area": 37500,
      "iscrowd": 1
    },
    {
      "id": 3,
      "image_id": 2,
      "category_id": 1,
      "bbox": [50, 50, 300, 400],
      "area": 120000,
      "iscrowd": 0
    }
  ],
  "categories": [
    {
      "id": 1,
      "name": "cat",
      "supercategory": "animal"
    },
    {
      "id": 2,
      "name": "dog",
      "supercategory": "animal"
    }
  ]
}
 

原文链接:https://blog.csdn.net/qq_38308388/article/details/136377164 

🍋🍋python代码实现

        python源码实现:

import json
import numpy as np

def label2coco(gray_label, image_id):
    # 创建COCO数据格式的字典
    coco_data = {
        "info": {},
        "licenses": [],
        "images": [],
        "annotations": [],
        "categories": []
    }

    # 添加图像信息
    image_info = {
        "id": image_id,
        "width": gray_label.shape[1],
        "height": gray_label.shape[0],
        "file_name": "image.jpg",
    }
    coco_data["images"].append(image_info)

    # 添加类别信息
    category_info = {
        "id": 1,
        "name": "object",
        "supercategory": "none"
    }
    coco_data["categories"].append(category_info)

    # 转换标签数据为COCO格式
    label_data = np.squeeze(gray_label)
    unique_labels = np.unique(label_data)
    for label in unique_labels:
        if label == 0:
            continue
        mask = label_data == label
        annotation_info = {
            "id": label,
            "image_id": image_id,
            "category_id": 1,
            "segmentation": [],
            "bbox": [],
            "area": int(np.sum(mask)),
            "iscrowd": 0
        }
        coco_data["annotations"].append(annotation_info)

    return coco_data

# 示例用法
gray_label = np.array([[0, 0, 1, 1],
                      [0, 2, 1, 1],
                      [0, 2, 2, 1]])

coco_data = label2coco(gray_label, image_id=1)
json.dump(coco_data, open("coco_data.json", "w"))

        上述代码实现了将单波段灰度图标签转换为COCO格式的JSON文件的功能。需要将标签存储为一个二维的numpy数组(gray_label),其中每个元素代表一个像素的类别信息。

        在示例中,灰度图标签为:[[0, 0, 1, 1], [0, 2, 1, 1], [0, 2, 2, 1]],其中0表示背景,1和2表示两个不同的物体。image_id为1,表示图像的唯一标识。

        函数label2coco接受灰度标签和图像ID作为输入,并返回COCO数据格式的字典。最后,将该字典存储为JSON文件(coco_data.json)。

        注意:该代码只实现了将灰度图标签转换为COCO格式的基本功能,可以根据实际需要进行修改和扩展。

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7-6 混合类型数据格式化输入

题目链接&#xff1a;7-6 混合类型数据格式化输入 一. 题目 1. 题目 2. 输入输出格式 3. 输入输出样例 4. 限制 二、代码 1. 代码实现 #include <stdio.h>int main(void) {int num;char c;float f1,f2;if (scanf("%f %d %c %f", &f1, &num, &c…

【NLP笔记】预训练+微调范式之OpenAI Transformer、ELMo、ULM-FiT、Bert..

文章目录 OpenAI TransformerELMoULM-FiTBert基础结构Embedding预训练&微调 【原文链接】&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 【本文参考链接】 The Illustrated BERT, ELMo, and co. (How NLP Cracked Tra…

单片机LED灯闪烁

延时函数计算&#xff08;相关代码生成&#xff09;&#xff1a; #include "reg52.h" #include <INTRINS.H> void Delay500ms() //11.0592MHz {unsigned char i, j, k;_nop_();_nop_();i 22;j 3;k 227;do{do{while (--k);} while (--j);} while (--i); }vo…

以太网协议(数据链路层)

一些基础知识: 平时使用的网线,也叫做"以太网线".平时使用的交换机,也叫做"以太网交换机".以太网这个协议,既涉及到数据链路层的内容,也涉及到物理层的内容. 1. 以太网帧的格式 ①目的地址,源地址: 此处的地址,叫做mac地址(物理地址).作用也是区分不同…

水果软件FL Studio 21 for mac 21.2.3.3586破解版的最新版本2024介绍安装

音乐是人类最美好的语言&#xff0c;它能够跨越国界、文化和语言&#xff0c;将人们紧密地联系在一起。在当今数字化时代&#xff0c;音乐创作已经不再是专业人士的专利&#xff0c;越来越多的音乐爱好者开始尝试自己动手制作音乐。而FL Studio21中文版编曲软件正是这样一个为你…

Linux:点命令source

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 source命令用于读取一个文件的内容并在当前Shell环境&#xff08;包括交互式Shell或是非交互式Shell&#xff09;执行里面的命令。它被称为点命令是因为命令名source也可…

【Web应用技术基础】HTML(4)——表单类的标签

目录 题目1&#xff1a;文本框 题目2&#xff1a;密码框 题目3&#xff1a;单选框 题目4&#xff1a;多选框 题目5&#xff1a;单选框选中 题目6&#xff1a;禁用disabled 题目7&#xff1a;lable标签 题目8&#xff1a;下拉框 题目9&#xff1a;textarea 题目10&…

【STM32】读写BKP备份寄存器RTC实时时钟

目录 BKP BKP简介 BKP基本结构 BKP测试代码 RTC RTC简介 RTC框图 RTC基本结构 硬件电路 RTC操作注意事项 接线图 初始化 使用BKP解决只初始化一次时间 初始化参考代码 RTC设置时间 RTC读取时间 完整代码 MyRTC.c MyRTC.h main.c BKP BKP简介 BKP&#xff0…

05.自定义指令,插槽和路由配置

一、学习目标 1.自定义指令 基本语法&#xff08;全局、局部注册&#xff09;指令的值v-loading的指令封装 2.插槽 默认插槽具名插槽作用域插槽 3.综合案例&#xff1a;商品列表 MyTag组件封装MyTable组件封装 4.路由入门 单页应用程序路由VueRouter的基本使用 一、自…

基于 HBase Phoenix 构建实时数仓(5)—— 用 Kafka Connect 做实时数据同步

目录 一、总体架构 二、安装配置 MySQL 1. 创建 mysql 用户 2. 建立 MySQL 使用的目录 3. 解压安装包 4. 配置环境变量 5. 创建 MySQL 配置文件 6. MySQL 系统初始化 7. 启动 mysql 服务器 8. 创建 dba 用户 三、配置 MySQL 主从复制 四、安装部署 Kafka Connector…

【机器学习】k近邻(k-nearest neighbor )算法

文章目录 0. 前言1. 算法原理1.1 距离度量1.2 参数k的选择 2. 优缺点及适用场景3. 改进和扩展4. 案例5. 总结 0. 前言 k近邻&#xff08;k-nearest neighbors&#xff0c;KNN&#xff09;算法是一种基本的监督学习算法&#xff0c;用于分类和回归问题。k值的选择、距离度量及分…

(2024,YOSO,自协同学习,扩散 GAN,单步生成)您只需采样一次:通过自协同扩散 GAN 驯服一步文本到图像合成

You Only Sample Once: Taming One-Step Text-To-Image Synthesis by Self-Cooperative Diffusion GANs 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 3. 背景…

Vue3 中应该使用 Ref 还是 Reactive?

一、引言 在Vue 3中&#xff0c;构建响应式数据结构是构建用户界面和交互体验的核心部分。而在创建这些响应式数据时&#xff0c;我们有两个主要工具&#xff1a;reactive和ref。选择使用哪一个&#xff0c;实际上取决于你的数据结构和访问需求。 reactive主要用于处理复杂的数…

麒麟 V10 一键安装 Oracle 19C 19.22 单机版

Oracle 一键安装脚本&#xff0c;演示 麒麟 V10 一键安装 Oracle 19C 19.22 单机版过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库 脚…

使用paho.mqtt.client实现MQTT Client连接EMQX Broker

目录 概述 1 认识paho.mqtt.client 2 实现MQTT Client 2.1 功能介绍 2.2 paho.mqtt.client库函数介绍 2.3 MQTT Client实现 2.3.1 创建项目 2.3.2 编写MQTT Client代码 2.3.3 Log工具源码 2.4 功能测试代码实现 2.4.1 功能介绍 2.4.2 代码实现 3 测试 3.1 EMQX上创…

学点儿Java_Day6_面向对象:类、封装、构造方法

1 类 1.1 定义 类&#xff1a;对现实世界中事物的抽象。Student 对象&#xff1a;现实世界中具体的个体。张三、李四 这些具体的学生 面向对象的特征&#xff1a;抽象、封装、继承、多态 OOP: Object Oriented Programming 类和对象的总结&#xff1a; 1、现实世界都是由很多…

语音识别教程:Whisper

语音识别教程&#xff1a;Whisper 一、前言 最近看国外教学视频的需求&#xff0c;有些不是很适应&#xff0c;找了找AI字幕效果也不是很好&#xff0c;遂打算基于Whisper和GPT做一个AI字幕给自己。 二、具体步骤 1、安装FFmpeg Windows: 进入 https://github.com/BtbN/FF…

python爬虫学习第二天----类型转换

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

C语言 指针练习

一、 a、b是两个浮点型变量&#xff0c;给a、b赋值&#xff0c;建立两个指针分别指向a的地址和b的地址&#xff0c;输出两个指针的值。 #include<stdio.h> int main() {float a,b,*p1,*p2;a10.2;b2.3;p1&a;p2&b;printf("a%f,b%f\n",a,b);printf("…

墨菲安全在软件供应链安全领域阶段性总结及思考

向外看&#xff1a;墨菲安全在软件供应链安全领域的一些洞察、思考、行动 洞察 现状&挑战&#xff1a; 过去开发安全体系是无法解决软件供应链安全问题的&#xff1b;一些过去专注开发安全领域的厂商正在错误的引导行业用开发安全思维解决软件供应链安全问题&#xff0c;治…