(以YOLO标注为例)labelimg标注闪退的几种情况详解,报错IndexError: list index out of range

补充下:下文是几个月前写的,最近发现了更好的标注手段。有梯子的可以登录这里。然后就是labelme,这工具更全面、对比labelimg也不容易遇到很多标注问题。

1、python版本没有对应上,导致闪退

报错信息如下:
可能是因为你用的是高版本python,比如python 3.11

TypeError: arguments did not match any overloaded call:
  drawLine(self, QLineF): argument 1 has unexpected type 'float'
  drawLine(self, QLine): argument 1 has unexpected type 'float'
  drawLine(self, int, int, int, int): argument 1 has unexpected type 'float'
  drawLine(self, QPoint, QPoint): argument 1 has unexpected type 'float'
  drawLine(self, Union[QPointF, QPoint], Union[QPointF, QPoint]): argument 1 has unexpected type 'float'

解决方法:

conda create -n labelimg python=3.9
conda创建labelimg的环境,指定python版本为3.9

2、重新打开标注文件时候,发生闪退

2.1顺序变化,那么会导致你标注的图片上的label都错乱。将顺序修改回原来的位置就可以了。

  • 举例

原来的顺序
在这里插入图片描述
打乱后的顺序
在这里插入图片描述

2.2类别减少,有些类别在classes.txt上消失了。

  • 你的classes.txt文件中类别变少了。此时需要将classes.txt补全回到原来的样子,才可以重新打开labelimg。
  • 种类减少
    在这里插入图片描述
    常见报错信息
# 此时你的classes.txt重构之后的类别总数会减少比如减少为2种了,
#但你标注在图片上的类别有几十种类别,那么这个种类的list里面就不会有那么多的,
#就会显示超出了索引列表
IndexError: list index out of range

3、如何避免(重点重点)

  • 原理
    构建完整的classes.txt文件,其实只需要第一张图。
为什么这么说呢?classes.txt文件记录了所有标注信息。那是不是只有你标注完了所有图片才可以建立完整的
classes.txt文件呢?其实不是,一张标注了所有类别的图,就可以生成完整的classes.txt文件。换句话说,
只要你第一张图包含所有类别,classes.txt将不会再发生任何闪退的问题。但你仍然需要你注意标注的顺序,
因为不闪退不代表标注顺序就没有问题。

第一张图片:这里没有戴沐白和马红俊,但是只要标上,以后就可以规避闪退的问题。

在这里插入图片描述

在这里插入图片描述

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又又土

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值