图像手动标注-labelme+yolo格式导出

news2024/11/14 1:02:17

conda环境

运行以下命令来激活你的虚拟环境:

conda activate labelme

如果你没有创建 labelme 环境,首先需要创建一个环境并安装 labelme

conda create -n labelme python=3.8
conda activate labelme
conda install -c conda-forge labelme

安装 Qt 相关依赖

conda install pyqt

激活环境后,在同一个命令行窗口中运行以下命令来启动 labelme

labelme

这条命令将会启动 labelme 图形界面,你可以开始加载图片并进行标注。

LabelMe 提供了几种常见的标注方式:

  • 矩形框(RectBox):点击并拖动来标注矩形框,适用于目标检测任务。
  • 多边形(Polygon):点击每个点来创建一个多边形,适用于不规则形状的目标。
  • 线(Line):标注直线,用于某些特定任务。
  • 点(Point):标注单个点,通常用于关键点检测任务。

保存标注

每次标注完成后,可以点击 “Save” 按钮来保存你的标注。LabelMe 会将标注保存为 JSON 格式文件,文件内容包含标注框的位置、类别以及图片的其他信息。

  • 保存后的文件通常会以 .json 扩展名结尾。例如:image1.json

利用python将json文件关键信息导出为yolo格式便于使用

import json
import os

# 类别映射:定义 JSON 文件中的类别名称到 YOLO 编号的映射
class_mapping = {
    "egret": 0,
    "cattle_egret": 1,
    "heron": 2,
    "magpie": 3
}

# 数据集文件夹路径
base_folder = "E:/shixi/other_images/other_images"  # 替换为你的数据集根目录

# 遍历每个类别文件夹
for class_name in ["egret", "cattle_egret", "heron", "magpie"]:
    class_folder = os.path.join(base_folder, class_name)

    # 遍历类别文件夹中的每个 JSON 文件
    for file in os.listdir(class_folder):
        # 查找 .json 文件
        if file.endswith(".json"):
            json_path = os.path.join(class_folder, file)
            print(f"Processing JSON file: {json_path}")

            # 打开 JSON 文件
            with open(json_path, "r") as f:
                data = json.load(f)

            # 获取图像文件名前缀
            image_name = file.replace(".json", "")
            txt_filename = f"{image_name}.txt"
            txt_path = os.path.join(class_folder, txt_filename)

            # YOLO 格式的标注内容
            yolo_lines = []

            # 遍历 JSON 文件中的标注信息
            for shape in data["shapes"]:
                label = shape["label"]
                if label in class_mapping:
                    class_id = class_mapping[label]

                    # 获取边界框的坐标
                    points = shape["points"]
                    x_min = min(points[0][0], points[1][0])
                    y_min = min(points[0][1], points[1][1])
                    x_max = max(points[0][0], points[1][0])
                    y_max = max(points[0][1], points[1][1])

                    # 计算 YOLO 格式的中心点和宽高
                    x_center = (x_min + x_max) / 2 / data["imageWidth"]
                    y_center = (y_min + y_max) / 2 / data["imageHeight"]
                    width = (x_max - x_min) / data["imageWidth"]
                    height = (y_max - y_min) / data["imageHeight"]

                    # 添加到 YOLO 格式的标注行
                    yolo_lines.append(f"{class_id} {x_center} {y_center} {width} {height}\n")

            # 将 YOLO 格式的内容写入 .txt 文件
            with open(txt_path, "w") as f:
                f.writelines(yolo_lines)

            print(f"Converted {json_path} to {txt_path}")

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[论文粗读][REALM: Retrieval-Augmented Language Model Pre-Training

引言 今天带来一篇检索增强语言模型预训练论文笔记——REALM: Retrieval-Augmented Language Model Pre-Training。这篇论文是在RAG论文出现之前发表的。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 语言模型预训练…

【人工智能】ChatGPT多模型感知态识别

目录 ChatGPT辅助细化知识增强!一、研究背景二、模型结构和代码任务流程一:启发式生成 三、数据集介绍三、性能展示实现过程运行过程训练过程 ChatGPT辅助细化知识增强! 多模态命名实体识别(MNER)最近引起了广泛关注。…

【黑马点评debug日记】

q1:登录无session跳转主页 p30,页面登录后返回,然后点击我的,需要重新设置,拦截器都没有问题。 参考: redis 黑马点评p30 login没有正常跳转,修改前端代码后还是一直跳转主界面_黑马点评登录后跳转到主页…

地面远阴影对光伏电站的影响

影响因素 1、太阳高度角和方位角 太阳高度角是指太阳光的入射方向和地平面之间的夹角。太阳高度角随时间、季节和地理位置的变化而变化。 方位角是指太阳光线在水平面上的投影与正南方向的夹角。方位角也随时间和地理位置的变化而变化。 可以通过天文公式或者专业的太阳位置…

消息队列高级

目录 消息可靠性 生产者消息确认 第一步:修改application.yml配置文件信息 第二步:定义发送者确认confirm回调方法 第三步:创建消息发送者回执return回调方法(确保消息从交换机到消息队列) 总结: 消息持…

宏观经济学笔记

【拯救者】宏观经济学速成 国民生产总值GNP: GNP 衡量一国(地区)成员在一定时期内运用生产要素所生产的全部最终产品和服务的市场价值。凡是本国国民所 创造的收入,不管生产要素是否在国内,都计入本国GNP中。 GDP本国居民在本国创造的价值外国居民在本国…

ONLYOFFICE 8.2测评:功能增强与体验优化,打造高效办公新体验

引言 随着数字化办公需求的不断增长,在线办公软件市场竞争愈加激烈。在众多办公软件中,ONLYOFFICE 无疑是一个颇具特色的选择。它不仅支持文档、表格和演示文稿的在线编辑,还通过开放的接口与强大的协作功能,吸引了众多企业和个人…

独显装完ubuntu后启动黑屏显示/dev/sda:clean files blocks的解决方案

解决方案如下: 选中Ubuntu按E键 在编辑界面倒数第2行的linux那行(后面有quiet splash选项)的最后添加nomodeset 然后按F10保存重启 然后管理员权限打开/etc/modprobe.d/blacklist.conf,在文件末尾添加: blacklist…

[Docker#2] 发展历史 | Namespace环境隔离 | Cgroup资源控制

目录 1.发展历史 Jail 时代 云时代 云原生时代 技术标准的确立 虚拟机 vs Docker 2. 容器化技术 2.1 Namespace 命令详解 1. dd 命令 2. mkfs 命令 3. df 命令 4. mount 命令 5. unshare 命令 实战 进程隔离 文件隔离 2.2 CGroup 相关命令 2.1 pidstat 2.…

AI生活之我用AI处理Excel表格

AI生活之我用AI处理Excel表格 场景再现AI提问词AI代码运行调试结果心得感受 场景再现 因学习需要,整理了某个题库,方便自己刷题使用。 已将每套题打上了制定标签,得到一个Excel表格。截图如下: 需求是:一共35套题&…

Stable Diffusion Web UI - ControlNet 姿势控制 openpose

openpose 是 ControlNet 中常用的控制模式之一。 通过 openpose 可以锁定人物姿势,把姿势信息传递给 Stable Diffusion 扩散模型,让其在扩散生成图片的时候遵照特定的任务姿势。 通过 openpose 能够得到类似如下效果: 同样的姿势&#xff0…

第三百一十九节 Java线程教程 - Java线程中断

Java线程教程 - Java线程中断 我们可以通过使用interrupt()方法中断一个活动的线程。 这个方法调用在线程只是一个指示。它是由线程如何响应中断。 例子 下面的代码显示了中断主线程并打印线程中断状态的代码。 public class Main {public static void main(String[] args)…

人工智能(AI)和机器学习(ML)技术学习流程

目录 人工智能(AI)和机器学习(ML)技术 自然语言处理(NLP): Word2Vec: Seq2Seq(Sequence-to-Sequence): Transformer: 范式、架构和自注意力: 多头注意力: 预训练、微调、提示工程和模型压缩: 上下文学习、思维链、全量微调、量化、剪枝: 思维树、思维…

Cynet:全方位一体化安全防护工具

前言 1999年,布鲁斯施奈尔曾说过:“复杂性是安全最大的敌人。”彼时还是19年前,而现在,网络安全已然变得更加繁杂。 近日我在网上冲浪过程中发现了这么一个平台性质的软件,看似具有相当强的防护能力。 根据Cynet的描…

可变类型参数

将形参设为可变类型参数,首先自己的函数要先有一个确定的形参,然后剩余的参数为 ... 用到三个宏,va_list, va_start, va_arg . va_list: 当作一个类型,底层是一个char* 被 typedef va_strat: 先定义一个va_list 类型的变量&#x…

AlphaFold3 开源啦!喜大普奔!

2024年5月8日,AlphaFold3 正式发布!时隔半年,今天,AlphaFold3 终于开源啦!🎉 不过别太激动哈哈哈哈哈,权重还是要额外申请的! 半年前,AlphaFold3 的发布激起了学术界的广…

什么是多因素身份验证(MFA)的安全性?

多因素身份验证(MFA)简介 什么是MFA 多因素身份验证(MFA)是一种安全过程,要求用户在授予对系统、应用程序或账户的访问权限之前提供两种或多种形式的验证。仅使用单个因素(通常是用户名和密码)保护资源会使它们容易受到泄露,添加…

Autosar CP Can State Mangement规范导读

CanSM的主要功能 CAN网络通信模式控制 管理CAN网络的启动、停止和不同通信模式(如全通信、静默通信、无通信)之间的切换。通过状态机实现对CAN网络状态的精确控制,确保网络在不同条件下稳定运行。错误处理与状态报告 根据AUTOSAR基础软件的错误分类方案处理错误,包括开发错…

【Python爬虫实战】全面解析 DrissionPage:简化 Python 浏览器自动化的三种模式

🌈个人主页:易辰君-CSDN博客 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、DrissionPage简介 (一)ChromiumPage (二)WebPage &a…

测试驱动:编写完善测试用例的艺术

测试驱动:编写完善测试用例的艺术 如何编写测试用例 如何撰写高效的测试用例,为产品的稳定性和质量保驾护航。无论你是新手还是经验丰富的测试工程师,让我们一起深入探讨,掌握测试用例编写的精髓! 1. 明确测试目标 …