Mac labelme安装及运行时崩溃bug解决
Posted 咻咻咻哈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac labelme安装及运行时崩溃bug解决相关的知识,希望对你有一定的参考价值。
labelme安装 on mac+python3
最近开始标注一些自己的数据集(自然图像),那不得首选labelme。本文记录一下安装过程以及运行labelme时遇到的bug(TypeError: arguments did not match any overloaded call: QPoint(): too many arguments)及解决方案。
平台:Mac+Anaconda(python3)
1、安装labelme
# python3
conda create --name=labelme python=3
source activate labelme
conda install -c conda-forge pyside2
conda install pyqt
conda install labelme -c conda-forge
运行labelme,直接在终端输入labelme
即可
2、运行labelme时遇到的bug及解决方案
虽然我可以成功打开labelme的QT界面,但当我进行图片缩放以及标注时出现了程序崩溃,网上一查搞清楚了原因。
我遇到了以下错误:
Traceback (most recent call last):
File "/Users/xiaopi/opt/anaconda3/envs/labelme_py3/lib/python3.10/site-packages/labelme/widgets/canvas.py", line 213, in mouseMoveEvent
pos = self.intersectionPoint(self.current[-1], pos)
File "/Users/xiaopi/opt/anaconda3/envs/labelme_py3/lib/python3.10/site-packages/labelme/widgets/canvas.py", line 706, in intersectionPoint
return QtCore.QPoint(x, y)
TypeError: arguments did not match any overloaded call:
QPoint(): too many arguments
QPoint(int, int): argument 1 has unexpected type 'float'
QPoint(QPoint): argument 1 has unexpected type 'float'
/Users/xiaopi/opt/anaconda3/envs/labelme_py3/bin/pythonw: line 3: 61298 Abort trap: 6 /Users/xiaopi/opt/anaconda3/envs/labelme_py3/python.app/Contents/MacOS/python "$@"*
这些bug出现的原因是由于labelme的版本问题导致的,labelme代码中的会用到QPoint(float,float) or QSize(float,float) 这些函数,但QT并不支持float类型的参数,所以我们需要对labelme包中这些函数的参数进行强制转化,以适配QT。
那我们根据报错的信息来修改一下QPoint()函数的传入参数类型
根据报错信息,打开函数所在文件:
vim /Users/xiaopi/opt/anaconda3/envs/labelme_py3/lib/python3.10/site-packages/labelme/widgets/canvas.py
找到QPoint()函数所在的第706行,将输入参数强制转换为int
return QtCore.QPoint(int(x), int(y))
如果报错的不是QPoint函数参数类型不匹配,而是其他函数,可以参考下面的链接,对代码进行修改:
labelme crash problems under python 3.10 qt 5.14/5.15 and opencv-python 4.5.4
补充:看网上也有一种说法是,出现以上错误是因为我的python版本是3.10,如果是python3.8或者3.7就不会出现这些bug,不过我也没有去验证啦。
以上是关于Mac labelme安装及运行时崩溃bug解决的主要内容,如果未能解决你的问题,请参考以下文章