python环境下labelImg图片标注工具的使用

labelimg GitHub地址

1. 写在开头

labelimg怎么用?网上查了好多博客和视频,我只想说都是垃圾。。。。

2. 如何使用

2.1安装

Get from PyPI but only python3.0 or above。but不要太高,看过一个人的博客说<=3.8。我刚开始用的3.12,然后就是一开始操作就闪退。改成3.8之后就好了。关于如何安装多个版本的python,用conda吧。

pip3 install labelImg

2.2 启动

2.2.1 先启动后设置标注的目录

命令行直接labelImg

(p38)  ~/Downloads/child1/ 
(p38)  ~/Downloads/child1/ 
(p38)  ~/Downloads/child1/ labelImg
QMetaType::registerTypedef: -- Type name 'PyQt_PyObject' previously registered as typedef of 'PyQt_PyObject' [1024], now registering as typedef of '' [-17958193].

然后就弹出来了页面
在这里插入图片描述

2.2.2 指定标注的目录和预设置的标签
  • 语法:labelImg [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
  • 案例说明:
    • 目录说明:images【需要标注的图片目录,目录名随意,但是网上说不要中文】,labels【标注结果的目录,目录名随意】,classes.txt【预设置的标签文件,一行一个标签,网上说不要用中文,文件名随意】
(p38)  ~/Downloads/child1/ 
(p38)  ~/Downloads/child1/ ll
total 8
-rw-r--r--@ 1 admin  staff     9B  5  7 21:03 classes.txt
drwxr-xr-x  8 admin  staff   256B  5  7 21:32 images
drwxr-xr-x  4 admin  staff   128B  5  7 21:32 labels
(p38)  ~/Downloads/child1/ 
(p38)  ~/Downloads/child1/ 
(p38)  ~/Downloads/child1/ tree .
.
├── classes.txt
├── images
│   ├── 1.jpg
│   ├── 2.jpg
│   ├── 3.jpg
│   ├── 4.jpg
└── labels
    ├── 1.json
    └── 2.json

3 directories, 9 files
(p38)  ~/Downloads/child1/ 
(p38)  ~/Downloads/child1/ cat classes.txt 
RB
L
B
T
(p38)  ~/Downloads/child1/ 

  • 命令:abelimg images classes.txt
(p38)  ~/Downloads/child1/ labelimg images classes.txt     
QMetaType::registerTypedef: -- Type name 'PyQt_PyObject' previously registered as typedef of 'PyQt_PyObject' [1024], now registering as typedef of '' [-17958193].
  • 弹出来的页面

在这里插入图片描述

  • 标注
    按键盘的w按键,鼠标画框后就可以弹出来标签,选择标签就好了。
    在这里插入图片描述

2.3 设置自动保存和显示类别。

在这里插入图片描述

  • 自动保存:点击“下一个图片”的时候自动保存操作的标签

2.4 保存文件类型

在这里插入图片描述

  • PASCAL VOC格式:XML
    图片来源:https://blog.csdn.net/m0_46489757/article/details/134973914
    在这里插入图片描述

  • YOLO格式:txt文本
    图片来源:https://blog.csdn.net/m0_46489757/article/details/134973914
    在这里插入图片描述

  • CreateML格式:json
    图片来源:https://blog.csdn.net/m0_46489757/article/details/134973914
    在这里插入图片描述

2.5 快捷键

在这里插入图片描述

2.5 docker 部署

官网,没有尝试:https://github.com/HumanSignal/labelImg?tab=readme-ov-file#use-docker

docker run -it \
--user $(id -u) \
-e DISPLAY=unix$DISPLAY \
--workdir=$(pwd) \
--volume="/home/$USER:/home/$USER" \
--volume="/etc/group:/etc/group:ro" \
--volume="/etc/passwd:/etc/passwd:ro" \
--volume="/etc/shadow:/etc/shadow:ro" \
--volume="/etc/sudoers.d:/etc/sudoers.d:ro" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
tzutalin/py2qt4

make qt4py2;./labelImg.py
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用YOLO进行批量标注图片,可以按照以下步骤: 1. 准备数据集:将需要标注图片保存在一个文件夹中,并在该文件夹中创建一个labels子文件夹用于保存标注结果。 2. 安装YOLO:按照YOLO官方文档的指引,安装YOLO。 3. 创建标注文件:使用YOLO提供的labelImg工具或其他标注工具,创建标注文件。标注文件应该包含每张图片中所有目标的类别和位置信息。 4. 将标注文件转换为YOLO格式:将标注文件转换为YOLO所需的格式。YOLO要求每个标注文件包含一行数据,该行数据应该包含目标的类别和位置信息。位置信息应该是目标在图片中的中心点坐标、宽度和高度,以及相对于图片大小的比例。 5. 执行批量标注脚本:编写一个Python脚本,使用YOLO提供的API读取每个图片和相应的标注文件,并将标注结果保存在labels子文件夹中。 以下是一个简单的Python脚本示例: ``` import os import cv2 import numpy as np import glob # 标注文件所在目录 label_dir = "labels" # 图片文件所在目录 image_dir = "images" # YOLO配置文件 cfg_file = "yolov3.cfg" # YOLO权重文件 weight_file = "yolov3.weights" # YOLO类别文件 class_file = "coco.names" # 加载YOLO模型 net = cv2.dnn.readNetFromDarknet(cfg_file, weight_file) # 加载类别文件 classes = [] with open(class_file, "r") as f: classes = [line.strip() for line in f.readlines()] # 遍历图片文件 for image_file in glob.glob(os.path.join(image_dir, "*.jpg")): # 加载图片 image = cv2.imread(image_file) height, width, channels = image.shape # 执行YOLO检测 blob = cv2.dnn.blobFromImage(image, 1 / 255.0, (416, 416), swapRB=True, crop=False) net.setInput(blob) layer_names = net.getLayerNames() output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] outputs = net.forward(output_layers) # 解析YOLO输出 boxes = [] confidences = [] class_ids = [] for output in outputs: for detection in output: scores = detection[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: center_x = int(detection[0] * width) center_y = int(detection[1] * height) w = int(detection[2] * width) h = int(detection[3] * height) x = int(center_x - w / 2) y = int(center_y - h / 2) boxes.append([x, y, w, h]) confidences.append(float(confidence)) class_ids.append(class_id) # 标注结果保存到文件 label_file = os.path.join(label_dir, os.path.basename(image_file).replace(".jpg", ".txt")) with open(label_file, "w") as f: for i in range(len(boxes)): class_name = classes[class_ids[i]] x, y, w, h = boxes[i] x_rel = x / width y_rel = y / height w_rel = w / width h_rel = h / height f.write(f"{class_name} {x_rel:.6f} {y_rel:.6f} {w_rel:.6f} {h_rel:.6f}\n") ``` 该脚本使用OpenCV的DNN模块执行YOLO检测,并将标注结果保存到labels子文件夹中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值