Labelme的安装与使用教程

devtools/2024/9/24 2:30:24/

文章目录

  • 一、Labelme是什么?
  • 二、安装步骤
    • 1.新建虚拟环境
    • 2.安装Labelme
    • 3.Labelme的使用
  • 三、json2yolo


一、Labelme是什么?

Labelme是一个用于图像标注的开源工具,可以实现图像标注、语义分割、实例分割等。

本文记录一下labelme的安装与使用,主要是用于语义分割的,因为我只有一个类别~。

二、安装步骤

1.新建虚拟环境

我这边是新建了一个新的虚拟环境,这样看起来更直观一些。当然也可以在已安装的虚拟环境中安装,毕竟也只是一个工具模块。新建虚拟环境的推荐使用Annconda进行新建虚拟环境。在安装完成Annconda后,在菜单栏搜索界面中搜索Anaconda Prompt (Anaconda)并打开,输入conda create -n test python=3.8创建虚拟环境。

python">conda create -n test python=3.8

在这里插入图片描述

输入y确认安装。

在这里插入图片描述

命令会自动安装一些必要库,结束之后,虚拟环境就创建完成啦。

2.安装Labelme

  1. 查看本地使用annconda创建的所有虚拟环境,可以看到刚刚创建的test也在其中。

     conda env list
    

在这里插入图片描述

  1. 输入conda activate test激活虚拟环境,test为刚刚创建的虚拟环境名称

     conda activate test
    

在这里插入图片描述

在输入了激活命令后,便由基础环境(base)转到了(test),输入conda install pyqt,这是在安装labelme之前需要安装的第一个库,安装过程中选择y继续安装pyqt的相关库。

	conda install pyqt
  1. 继续输入conda install pillow安装pillow模块

    conda install pillow
    

在这里插入图片描述

  1. 在安装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格式,代码如下:

python">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()

http://www.ppmy.cn/devtools/96403.html

相关文章

Element UI详解

目录 Element UIElement UI 简介开发使用开发指南概述总结 设计原则组件使用特性使用场景优势不足 Element UI Element UI 简介 Element UI 是由饿了么前端团队开发的一套基于 Vue.js 的桌面端组件库。它提供了一系列丰富的 UI 组件,用于快速搭建企业级的 Web 应用…

在Moodle中集成ONLYOFFICE:学习管理+文档功能全面指南

一、引言 随着在线教育的发展,Moodle作为领先的开源学习管理系统,其灵活性和可扩展性为教育工作者提供了丰富的功能。而ONLYOFFICE文档服务器的加入,更是为Moodle用户带来了无缝的文档处理与协作体验。本文将详细指导您如何在Moodle中深度集成…

计算机毕业设计 健身房管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

docker save和docker export的区别

总结一下docker save和docker export的区别: docker save保存的是镜像(image),docker export保存的是容器(container);docker load用来载入镜像包,docker import用来载入容器包&…

EGL函数翻译--eglSwapBuffers

EGL函数翻译–eglSwapBuffers 函数名 EGLBoolean eglSwapBuffers(EGLDisplay display,EGLSurface surface);参数描述 display 指定 EGL 显示连接。 surface 指定要交换缓冲区的 EGL 绘图表面。 详细描述 如果 surface 是具有后备缓冲的窗口表面,则颜色缓冲区会…

【数据结构篇】~单链表(附源码)

【数据结构篇】~链表 链表前言链表的实现1.头文件2.源文件 链表前言 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 1、链式机构在逻辑上是连续的,在物理结构上不一定连续​ 2、结点一般是从…

《AI音频类工具之九——Stable Audio​ 》

一.简介 官网:https://www.stableaudio.com/?utm_source=ai-bot.cn Stable Audio是一款由Stability AI开发的在线AI音乐制作工具,它利用先进的音频生成模型,为用户提供了一种全新的音乐创作方式。 二.功能介绍 文本到音频生成:用户可以通过输入描述性的文本提示来生成音…

Redis远程字典服务器(4)—— string类型详解

目录 一,string基本情况 二,string命令详解 2.1 set命令选项 2.2 setnx,setex 2.3 incr,incrby 2.4 decr,decrby 2.5 append拼接 2.6 getrange获取 2.7 setrange修改 2.8 strlen获取长度 2.9 总结 三&…