Labelme的安装与使用教程

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

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

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

conda create -n test python=3.8
1


输入y确认安装。

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

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

 conda env list
1


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

 conda activate test
1


在输入了激活命令后,便由基础环境(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
1


至此,模块的安装部分就结束了,在命令行中输入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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值