您的位置:首页 > 财经 > 金融 > Labelme的安装与使用教程

Labelme的安装与使用教程

2025/1/9 13:55:29 来源:https://blog.csdn.net/qq_42591591/article/details/141166526  浏览:    关键词: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

  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格式,代码如下:

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com