python列表索引超出范围_labelImg 列表索引超出范围问题的简单解决方法

本文介绍了labelImg图像标注工具的使用方法,包括安装步骤和解决在使用过程中遇到的列表索引超出范围的错误。通过安装Python、PyQt5、PyQt5_tools和lxml,以及正确运行资源文件,可以成功安装工具。当出现错误时,可以通过`pip3 install labelImg`来修复。工具使用包括打开图片文件夹,创建矩形框进行标注,并保存XML配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

labelImg标注图像软件简介

labelImg 是一个图形图像注释工具,采用#Python# 编写而成,并使用#Qt# 作为其图形界面。注释以 PASCAL VOC 、YOLO等格式保存为 XML 文件,格式使用了 ImageNet。

f69604fee81f13cf497aef4771830da8.png

标注界面

安装方法(win10+Python3.5以上)

1.安装python(3.5以上)

2.安装PyQt5(方法:进入cmd后,输入: pip install PyQt5)

868d4abcf4ebc75efe6afd054625b192.png

dos界面

3.安装PyQt5_tools(方法:进入cmd后,输入:pip install pyqt5-tools)

3ce16ade63e5800421fa5c16105469ec.png

dos界面

4.安装lxml(方法:进入cmd后,输入:pip install lxml)

878ea1da42fc51091489c850c75a2ab2.png

dos界面

5.下载源码:https://github.com/tzutalin/labelImg,然后解压,在cmd进入到文件夹中

c486ef17328cccc0a6d1d471a94e3f4e.png

dos界面

6.运行resources.qrc和resources.py(方法:在cmd进入到labelImg-master文件夹中,输入: pyrcc5 -o resources.py resources.qrc)

d75fa636c45b5f217b8725489e4c1b2e.png

dos界面

7.然而在导入的图片里进行"上一张"和"下一张"切换的时候,出现了新的错误

7dfce46f3cfb1ad8bb938a9e8a4fb141.png

dos界面

8.解决方法如下图所示(进入cmd后,输入:pip3 install labelImg)

059e784f02d0465a910459eaff9a796d.png

dos界面

9.在cmd界面输入:labelImg即可解决如上问题

工具使用方法

602c4c78bd359e5f082c3d5e29e269ba.png

主界面

①点击"Open Dir"打开图片所在的文件夹(其下可以多个子文件夹,程序会自动匹配)

②点击"Change Save Dir"选择xml保存的路径或者需要加载的xml文件所在的文件夹(所有xml放在同一文件夹下容易操作)

2dfbc83c02dfab5de5953ee53c0ece6e.png

打开图片后进行标注

③点击"Create RectBox"后,对目标进行标注

8eb17ce20c386fb79c8e928be031d632.png

xml文件

④固定好框的位置后,点击"Save"保存配置文件,保存后显示如上图的配置文件

感谢

大家可以手动实践一下,本文对于做深度学习方向研究工作的老师和同学有帮助,正在从事或者想做这方面工作的朋友们,可以相互交流,本文旨在分享。

# -*- encoding: utf-8 -*- """ @File : demo.py @Time : 2020/1/1 00:00 @Author : XXX @Email : XXXX@fitow-alpha.com @Software: PyCharm # Copyright 2020 The Fitow Authors. All Rights Reserved. 将各路径下的project文件转成coco,会找到给定路径下的所有project,且project需与图片在同一路径下 """ import os import json from PIL import Image def split_to_yolo(single_project): via_project = json.load(open(single_project, 'rb')) save_path = os.path.split(single_project)[0] via_img_metadata = via_project["_via_img_metadata"] super_category = list(via_project["_via_attributes"]["region"].keys())[0] labels = list(list(via_project["_via_attributes"]["region"].values())[0]["options"].keys()) for key, single_img_inf in via_img_metadata.items(): file_name = single_img_inf["filename"] regions = single_img_inf["regions"] im = Image.open(os.path.join(save_path, file_name), 'r') ann_info_dic = "" export_file = os.path.join(save_path, file_name[:-4] + ".txt") if regions != []: # print(file_name) for single_label_inf in regions: label_index = labels.index(single_label_inf["region_attributes"][super_category]) label_left_x = single_label_inf["shape_attributes"]["x"] label_left_y = single_label_inf["shape_attributes"]["y"] label_w = single_label_inf["shape_attributes"]["width"] label_h = single_label_inf["shape_attributes"]["height"] #将边框规范到图内 if label_left_x < 0: label_left_x = 0 if label_left_y < 0: label_left_y = 0 if label_w > im.width: label_w = im.widt if label_h > im.height: label_h = im.height ann_info_dic = str(label_index) \ + ' ' + str((label_left_x + label_w / 2) / im.width) \ + ' ' + str((label_left_y + label_h / 2) / im.height) \ + ' ' + str(label_w / im.width) \ + ' ' + str(label_h / im.height) \ + '\n' with open(export_file, "a+") as out_file: out_file.write(ann_info_dic) else: with open(export_file, "a+") as out_file: out_file.write(ann_info_dic) def project_to_yolo(input_dir_list): project_path_list = [] for single_path in input_dir_list: for root, dirs, files in os.walk(single_path): for name in files: if 'project' in name: project_path_list.append(os.path.join(root, name)) for single_project in project_path_list: print(single_project) split_to_yolo(single_project) print("over") if __name__ == "__main__": input_dir_list = [r'D:\code\yolov5-6.0\banshita'] #input_dir_list = [r'E:/公司文件/valimages'] project_to_yolo(input_dir_list)
03-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值