关于labelimg安装后在标注过程中闪退和死机的问题处理

labelimg安装后在标注过程中闪退和死机,并在控制台出现如下错误提示:

raceback (most recent call last): File "D:\dev\python3.12.0\Lib\site-packages\libs\canvas.py", line 530, in paintEvent p.drawLine(self.prev_point.x(), 0, self.prev_point.x(), self.pixmap.height()) 运行labelimg时候出现如下错误:TypeError: arguments did not match any overloaded call: drawLine(self, l: QLineF): argument 1 has unexpected type 'float' drawLine(self, line: QLine): argument 1 has unexpected type 'float' drawLine(self, x1: int, y1: int, x2: int, y2: int): argument 1 has unexpected type 'float' drawLine(self, p1: QPoint, p2: QPoint): argument 1 has unexpected type 'float' drawLine(self, p1: UnionQPointF, QPoint, p2: UnionQPointF, QPoint): argument 1 has unexpected type 'float'

经过查找资料发现是labelimg版本不能PQ5版本兼容出现的问题,具体的说是使用的 Python 版本较高(当前是 Python 3.12),而 LabelImg 这个工具在较新的 PyQt5 库中,绘图函数不再支持传入浮点数(float),必须强制转换为整数(int)。

具体处理的方法如下:

1. 修改 canvas.py 文件(解决核心报错)

根据报错提示,找到 D:\dev\python3.12.0\Lib\site-packages\libs\canvas.py 这个文件,用文本编辑器(如记事本、VS Code等)打开它。

找到第 530 行左右的代码:

p.drawLine(self.prev_point.x(), 0, self.prev_point.x(), self.pixmap.height())

将其修改为(在坐标数值外包裹 int() 进行强制转换):

p.drawLine(int(self.prev_point.x()), 0, int(self.prev_point.x()), int(self.pixmap.height()))

建议顺手修复同文件下的其他潜在报错

为了防止后续出现类似的闪退,建议同时检查并修改该文件中第 526 行和第 531 行的代码:

  • 第 526 行修改为:
    p.drawRect(int(left_top.x()), int(left_top.y()), int(rect_width), int(rect_height))
  • 第 531 行修改为:
    p.drawLine(0, int(self.prev_point.y()), int(self.pixmap.width()), int(self.prev_point.y()))

2. 修改 labelImg.py 文件(预防滚动闪退)

在高版本 Python 中,滚动鼠标滚轮时也容易触发类似的 float 类型报错。建议提前修复:

找到 D:\dev\python3.12.0\Lib\site-packages\labelImg\labelImg.py 这个文件并打开。

找到第 965 行左右(通常在 scroll_request 函数内)的代码:

  • bar.setValue(bar.value() + bar.singleStep() * units)

  • 将其修改为:

  • bar.setValue(int(bar.value() + bar.singleStep() * units))

  • 经过以上修改有效的解决上述问题。

相关推荐
wuyk55519 小时前
第2章:六步换相原理全解+STM32工程实战
c语言·开发语言·stm32·单片机·嵌入式硬件
hey_sml19 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
萧瑟余晖21 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
北斗落凡尘21 小时前
LangGraph 入门实战(2)
python·langchain
ttod_qzstudio21 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
萧瑟余晖1 天前
Java深入解析篇十七之Spring Security
java·开发语言·spring
jufeng13071 天前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 1 篇】
人工智能·python·架构·agent
月光船幽幽1 天前
影子模式下保护 logits 不被修改
人工智能·python·算法
二十雨辰1 天前
[Java]-Spring面试题
java·开发语言
_oP_i1 天前
python 后缀 mjs文件
开发语言·python