关于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: Union[QPointF, QPoint], p2: Union[QPointF, 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))

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

相关推荐
测试员周周3 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
测试19983 小时前
软件测试 - 单元测试总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
曲幽5 小时前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
杜子不疼.5 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号35 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia6 小时前
Qt——编辑交互功能的实现
开发语言·qt
石山代码6 小时前
C++ 内存分区 堆区
java·开发语言·c++
前端若水7 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
无风听海7 小时前
C# 隐式转换深度解析
java·开发语言·c#
涛声依旧-底层原理研究所7 小时前
残差连接与层归一化通俗易懂的详解
人工智能·python·神经网络·transformer