Labelme的安装与使用教程
文章目录
- 一、Labelme是什么?
- 二、安装步骤
- 1.新建虚拟环境
- 2.安装Labelme
- 3.Labelme的使用
- 三、json2yolo
一、Labelme是什么?
Labelme是一个用于图像标注的开源工具,可以实现图像标注、语义分割、实例分割等。
本文记录一下labelme的安装与使用,主要是用于语义分割的,因为我只有一个类别~。
二、安装步骤
1.新建虚拟环境
我这边是新建了一个新的虚拟环境,这样看起来更直观一些。当然也可以在已安装的虚拟环境中安装,毕竟也只是一个工具模块。新建虚拟环境的推荐使用Annconda进行新建虚拟环境。在安装完成Annconda后,在菜单栏搜索界面中搜索Anaconda Prompt (Anaconda)并打开,输入conda create -n test python=3.8
创建虚拟环境。
conda create -n test python=3.8
输入y
确认安装。
命令会自动安装一些必要库,结束之后,虚拟环境就创建完成啦。
2.安装Labelme
-
查看本地使用annconda创建的所有虚拟环境,可以看到刚刚创建的
test
也在其中。conda env list
-
输入
conda activate test
激活虚拟环境,test
为刚刚创建的虚拟环境名称conda activate test
在输入了激活命令后,便由基础环境(base)
转到了(test)
,输入conda install pyqt
,这是在安装labelme之前需要安装的第一个库,安装过程中选择y
继续安装pyqt的相关库。
conda install pyqt
-
继续输入
conda install pillow
安装pillow模块conda install pillow
- 在安装labelme库的时候就不能在
conda
里面进行安装了,需要使用pip
命令。这里记录一个简便进入虚拟环境的方法。打开Annconda的安装目录D:\Anaconda3\envs
(这里是我的安装路径),在envs
里面就是所有创建的虚拟环境啦。进入刚刚创建的虚拟环境,在D:\Anaconda3\envs\test\Scripts
此目录下,在上方文件目录中输入cmd
就进入到虚拟环境中了。
连接清华镜像源后进行安装
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
至此,模块的安装部分就结束了,在命令行中输入labelme
,便会打开labelme的操作界面。
ps:在安装pyqt和pillow的时候也可以像安装labelme一样在文件中打开虚拟环境,连接镜像源进行安装。
3.Labelme的使用
在控制台输入labelme
打开Labelme。
在labelme软件中,最主要的几个功能如下:
1️⃣打开:只打开一张图像进行标注,建议通过第二个功能打开包含图像的文件夹,进行标注。
2️⃣打开目录:点击后会弹出一个窗口,选择一个文件夹,文件夹中包含要进行标注的图像。
3️⃣上一幅:在打开目录的情况下,点击后可切换到上一张图片,也可以使用快捷键a
。
4️⃣下一幅:在打开目录的情况下,点击后可切换到下一张图片,也可以使用快捷键d
。
5️⃣保存:在标注完成后,会生成标签文件。保存选项即选择本地的一个文件夹保存标签文件。建议在选择完打开目录
后,便选择一个文件夹路径保存将要生成的标签文件。
6️⃣创建多边形:这一个功能是最重要的,选择了一张图像后便可以进行标注,选择这个功能后即可这对界面中显示的图像进行分割标注,注意标注点要尽可能贴合目标,也可以使用快捷键w
。
❗ 注意在标注的时候,最后一个点要首尾相连。完成后会弹出一个窗口,在窗口内输入标签,确认后一幅图像就标注完成啦。这样便会在保存目录中生成标签的json文件。
在json文件中,
shapes
用于内存放目标的相关信息;
imagePath
表示被标注图像的相对存储路径;
imageData
表示被存储的图像的编码数据;
imageHeight
表示该图像的高度;
imageWidth
表示该图像的宽度。
shapes
内中的label
是目标名称,points
内保存了标注过程中点的坐标,从左上角(0,0)开始算起。
三、json2yolo
为了能够满足yolo模型的训练,其传入的标签格式是txt的,所以需要将标注的json格式的数据转成txt格式,代码如下:
import cv2
import os
import json
import glob
import numpy as np def convert_json_label_to_yolov_seg_label(): json_path = r"D:\\image_denoising_test\\self_test\\RestLabel" # 本地json路径json_files = glob.glob(json_path + "/*.json") print(json_files) # 指定输出文件夹 output_folder = "D:/image_denoising_test/self_test/RestLabel/txt" # txt存放路径if not os.path.exists(output_folder): os.makedirs(output_folder) for json_file in json_files: print(json_file) with open(json_file, 'r') as f: json_info = json.load(f) img = cv2.imread(os.path.join(json_path, json_info["imagePath"])) height, width, _ = img.shape np_w_h = np.array([[width, height]], np.int32) txt_file = os.path.join(output_folder, os.path.basename(json_file).replace(".json", ".txt")) with open(txt_file, "w") as f: for point_json in json_info["shapes"]: txt_content = "" np_points = np.array(point_json["points"], np.int32) norm_points = np_points / np_w_h norm_points_list = norm_points.tolist() txt_content += "0 " + " ".join([" ".join([str(cell[0]), str(cell[1])]) for cell in norm_points_list]) + "\n" f.write(txt_content) convert_json_label_to_yolov_seg_label()
相关文章:

Labelme的安装与使用教程
文章目录 一、Labelme是什么?二、安装步骤1.新建虚拟环境2.安装Labelme3.Labelme的使用 三、json2yolo 一、Labelme是什么? Labelme是一个用于图像标注的开源工具,可以实现图像标注、语义分割、实例分割等。 本文记录一下labelme的安装与使…...
C#基础:数据库中使用Linq作分组处理(反射/直接分组)
目录 一、使用反射分组 二、不使用反射分组 三、调用示例 四、代码demo 一、使用反射分组 private static List<GroupList<T>> GetGroupList<T>(List<T> entities, string groupByProperty) {// 获取分组字段的类型var propertyInfo typeof(T).…...

Revite二次开发_使用WPF和WebView2制作一个访问网站的窗口
如果想在revit里打开网页,可以使用WebView2来实现,下面是一个代码示例。 也尝试过使用CefSharp,但由于Revit本身也使用了CefSharp,所以需要根据不同的Revit版本选择适合的CefSharp版本,比较麻烦,所以最好还…...
Java Spring Boot 连接数据库
要在Java Spring Boot应用程序中连接数据库,您需要遵循以下步骤: 1. 添加数据库依赖项:在您的Spring Boot项目中的pom.xml文件中添加数据库依赖项,例如MySQL或PostgreSQL等。例如,如果您要连接MySQL数据库,…...

Java面试八股之消息队列中推模式和拉模式分别有哪些使用场景
消息队列中推模式和拉模式分别有哪些使用场景 消息队列的推模式(Push)和拉模式(Pull)各有不同的使用场景和优缺点。下面我会详细介绍这两种模式及其适用场景: 推模式(Push) 特点:…...
springboot jar是如何启动的
我们先来看一个项目的打完包后的MANIFEST.MF文件: Manifest‐Version: 1.0 Implementation‐Title: spring‐learn Implementation‐Version: 0.0.1‐SNAPSHOT Start‐Class: com.tulingxueyuan.Application Spring‐Boot‐Classes: BOOT‐INF/classes/ Spring‐Bo…...

Android 12系统源码_屏幕设备(二)DisplayAdapter和DisplayDevice的创建
前言 在Android 12系统源码_屏幕设备(一)DisplayManagerService的启动这篇文章中我们具体分析了DisplayManagerService 的启动流程,本篇文章我们将在这个的基础上具体来分析下设备屏幕适配器的创建过程。 一、注册屏幕适配器 系统是在Disp…...
常用Mysql命令
前言 本文列举了一些常见的mysql操作 正文 一、连接和登录 MySQL 1. 使用命令行登录 MySQL 注意:需要将mysql的bin目录导入到环境变量中 mysql -u 用户名 -p示例: mysql -u root -p执行上述命令后,系统会提示输入密码,输入…...

IDEA Debug工具
一、Debug工具栏 自定义debug工具栏:先把debug程序运行起来->右击->配置 常用的工具: 二、DeBug常用图标详解 三、DeBug实践操作 常规Debug:略。 Stream Chain:处理流式语句 Reset Frame:重置方法入栈 …...
ARM64的汇编资源
最近在写一本ARM64的教材,所以在晚上查找了一下相关资源,都是免费开源的,不包括盗版书籍。 Exploring AArch64 assembler Roger Ferrer Ibez的博客文章,写在2016-2017年,内容简单充实,适合入门。 《ARM6…...

实验室安全分级分类管理系统在高校中的具体应用
盛元广通高校实验室安全分级分类管理系统的构建,旨在通过科学合理的管理手段,提高实验室的安全水平,保障师生的人身安全,防止实验事故的发生。这一系统通常包括实验室安全等级评估、分类管理、风险控制、安全教育与培训、应急响应…...

使用 prerenderRoutes 进行预渲染路由
title: 使用 prerenderRoutes 进行预渲染路由 date: 2024/8/20 updated: 2024/8/20 author: cmdragon excerpt: prerenderRoutes 函数是 Nuxt 3 中一个强大的工具,它能够帮助开发者优化页面加载速度和改善用户体验。通过使用 prerenderRoutes,你能够灵活地指定需要预渲染的…...

【深度解析】WRF-LES与PALM微尺度气象大涡模拟
查看原文>>>【深度解析】WRF-LES与PALM微尺度气象大涡模拟 针对微尺度气象的复杂性,大涡模拟(LES)提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟,这些过程往往与天气模式、地形影响和…...

redis事件机制
redis服务器是一个由事件驱动(死循环)的程序,它总共就干两件事: 文件事件:利用I/O复用机制,监听Socket等文件描述符发生的事件,如网络请求时间事件:定时触发的事件,负责完成redis内部定时任务&…...

【C++】模拟实现vector
可以把vector看作升级版的数组,可采用下标进行访问,非常高效,大小可动态改变,会自动扩容,数据存储在堆空间上。 VECROR 成员变量、函数及模板总览构造函数和析构函数无参构造函数构造n个元素大小的空间并初始化通过某个…...

【CAN-IDPS】汽车网关信息安全要求以及实验方法
《汽车网关信息安全技术要求及试验方法》是中国的一项国家标准,编号为GB/T 40857-2021,于2021年10月11日发布,并从2022年5月1日起开始实施 。这项标准由全国汽车标准化技术委员会(TC114)归口,智能网联汽车分会(TC114SC34)执行,主管部门为工业和信息化部。 该标准主要…...
EASE-Grid是啥东西?
EASE-Grid(Equal-Area Scalable Earth Grid,等面积可扩展地球网格)是NASA设计的网格系统,主要用于存储和处理全球范围内的地球科学数据。可以被理解为一种特殊的投影方式,使得在全球范围内进行数据分析和可视化时&…...
前端用户管理模块方法及api分析
用户管理 方法及对应api 搜索 searchSysUser / GetSysUserListByPage 重置 resetData 添加用户 addShow :点击按钮后出现对话框,含有提交 submit / SaveSysUser、取消按钮 修改 editSysUser / UpdateSysUser 删除 deleteById / DeleteSysUser 分配角色…...

microsoft edge怎么关闭安全搜索
microsoft edge浏览器为用户提供了安全搜索功能,旨在帮助用户过滤掉搜索结果中出现的不当信息。然而,有些用户可能觉得安全搜索功能限制了他们的浏览体验或工作需求。下面就给大家带来关闭microsoft edge安全搜索的相关内容,一起来看看吧。&a…...

Qt | QSQLite内存数据库增删改查
点击上方"蓝字"关注我们 01、演示 参数随便设置 查询 修改 右键菜单是重点 手动提交,点击Submit All...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
python打卡第47天
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图,展示模…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...