移动端网站没有icp,网页生成助手,vi设计是设计什么东西,怎么自己做网页初学者文章目录 LabelImg介绍LabelImg安装LabelImg界面标注常用的快捷键标注前的一些设置案例演示检查YOLO标签中的标注信息是否正确参考文章 LabelImg介绍
LabelImg是目标检测数据标注工具#xff0c;可以标注两种格式#xff1a;
VOC标签格式#xff0c;标注的标签存储在xml文… 文章目录 LabelImg介绍LabelImg安装LabelImg界面标注常用的快捷键标注前的一些设置案例演示检查YOLO标签中的标注信息是否正确参考文章 LabelImg介绍
LabelImg是目标检测数据标注工具可以标注两种格式
VOC标签格式标注的标签存储在xml文件YOLO标签格式标注的标签存储在txt文件中
LabelImg官网 labelImg的GitHub链接https://github.com/HumanSignal/labelImg LabelImg安装
在Anaconda创建的虚拟环境中使用pip安装LabelImg。 1、打开 Anaconda Prompt 2、创建一个虚拟环境
conda create -n use_labelimg python3.63、激活虚拟环境
conda activate use_labelimg4、使用pip安装LabelImg有挂代理/梯子记得关掉
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple5、执行以下命令打开LabelImg
labelimgLabelImg界面 标注常用的快捷键
W调出标注的十字架开始标注A切换到上一张图片D切换到下一张图片CtrlS保存标注好的标签del删除标注的矩形框Ctrl鼠标滚轮按住Ctrl然后滚动鼠标滚轮可以调整标注图片的显示大小Ctrlu选择要标注图片的文件夹Ctrlr选择标注好的label标签存放的文件夹↑→↓←移动标注的矩形框的位置 标注前的一些设置
点击View显示如下图然后把如下的几个选项勾上
Auto Save mode当你切换到下一张图片时就会自动把上一张标注的图片标签自动保存下来这样就不用每标注一样图片都按CtrlS保存一下了Display Labels标注好图片之后会把框和标签都显示出来Advanced Mode这样标注的十字架就会一直悬浮在窗口不用每次标完一个目标再按一次W快捷键调出标注的十字架。 案例演示
1、假设在我的 green_plate文件夹 中已经存放了所要进行标注的车牌图片 2、在 LabelImg界面 通过 Open Dir 导入 green_plate文件夹 3、在 LabelImg界面 通过 Change Save Dir 选择 存放标注好图片的文件夹路径
4、在 LabelImg界面 点击 View 进行标注前的一些设置 5、设置标注的文件格式为YOLO 6、按W键调出标注的十字架开始标注 可通过Ctrl鼠标滚轮调整标注图片的显示大小方便对目标进行标注 7、对一张图片标注完成后按D键切换到下一张图片继续标注 8、如果需要对一个标注好的矩形框进行删除可以按以下图片中的操作进行 9、重复以上步骤直至所有的图片标注完成 10、在存放标注好图片的文件夹中查看标注好的文件 检查YOLO标签中的标注信息是否正确 通过读取图像文件和相应的标签文件来绘制边界框并在窗口中显示带有边界框的图像。 如果边界框的位置和大小与预期相符那么可以认为YOLO格式的标签是正确的。 文件名: CheckYOLOLabels.py
功能描述: 检查YOLO标签中的标注信息是否正确
import os
import cv2
import matplotlib.pyplot as plt
import numpy as npdef listPathAllfiles(dirname):遍历指定目录下的所有文件并返回一个包含这些文件路径的列表。result []for maindir, subdir, file_name_list in os.walk(dirname):for filename in file_name_list:apath os.path.join(maindir, filename)result.append(apath)return resultif __name__ __main__:# YOLO图片文件的保存路径imagespath DeepLearningProjects\\green_plate# YOLO标签文件的保存路径labelspath DeepLearningProjects\\process_green_plate# 获取所有标签文件的路径labelsFiles listPathAllfiles(labelspath)# 逆序遍历标签文件因为通常最新的文件在最后for lbf in labelsFiles[::-1]:# 读取标签文件的每一行并将其分割成一个列表labels open(lbf, r).readlines()labels list(map(lambda x: x.strip().split( ), labels))# 构造对应的图片文件名imgfileName os.path.join(imagespath, os.path.basename(lbf)[:-4] .jpg) # .jpg# 从文件中读取图片cv2.imdecode函数可以将字节流解码为图像img cv2.imdecode(np.fromfile(imgfileName, dtypenp.uint8), 1)# 遍历每个标签for lbs in labels:# 将标签字符串转换为浮点数并去掉类别索引lb list(map(float, lbs))[1:]# 根据标签计算边界框的左上角和右下角坐标x1 int((lb[0] - lb[2] / 2) * img.shape[1])y1 int((lb[1] - lb[3] / 2) * img.shape[0])x2 int((lb[0] lb[2] / 2) * img.shape[1])y2 int((lb[1] lb[3] / 2) * img.shape[0])# 在图像上绘制边界框cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 5)# 调整图像大小使其最大边长为600像素ratio 600 / min(img.shape[0:2])img cv2.resize(img, dsize(int(img.shape[1] * ratio), int(img.shape[0] * ratio)))# 显示带有边界框的图像cv2.imshow(Image, img)# 等待用户按键按任意键继续cv2.waitKey()# 关闭所有OpenCV创建的窗口cv2.destroyAllWindows()参考文章 目标检测使用LabelImg标注VOC数据格式和YOLO数据格式——LabelImg使用详细教程