标注工具 LabelImg 改造指南
分享一下对于 labelimg 的一些改造技巧
如何找到代码的位置
在 anaconda prompt 下输入如下指令
或者,用 vscode 打开,然后输入
按住 control 键鼠标点击 labelImg 后会自动跳转到
<Anaconda 安装路径>\Lib\site-packages\labelImg\__init__.py
(本文此后路径中,紫色的部分都将省略掉)
改动之前记得做好版本控制
去除 change save dir

由于点击 open dir 后还需要再点击 change save dir 来设置保存路径,这样两步操作就会容易出错,并且通常保存路径和打开路径都是同一个,所以个人决定把这个反人类的设计去除掉。
相关代码在 labelImg\labelImg.py 第 1241 行
这里把我们把这个函数整个删除掉,以及将 1325 行 open_prev_image, 1350 行 open_next_image 中的 change_save_dir_dialog 去掉
然后把第 221 行
删除,以及将所有引用变量 change_save_dir 的地方,把变量 change_save_dir 删除
最后在 1274 行的 open_dir_dialog 函数的最后加入 self.default_save_dir = target_dir_path,如下
同理你也可以把 open (打开单个文件)去掉,因为实在找不到这个功能的任何实用价值
对 Labels List 排序
第 806 行,load_labels 函数的最开头加入一个 sort:
上面这个代码就是根据标签名进行排序
排序之后可以看得清楚一点,不会再杂乱无章
由于 labelimg 最上层的方框会覆盖下面的,所以也可以根据自定义排序,把想要调整的物体拉到最前端
改变文字大小
第 1165 行
中的 0.02 控制字体大小,个人感觉 0.01 左右最合适
文字描边
由于 labelimg 的字体实在是太细,所以加一个描边会看得清楚一些,相关的代码在libs\shape.py 这个文件下面
在第 87 行的 paint 函数中,在 if self.paint_label 这个条件判断的最后加入如下代码
这样是给所有的文字加上了一个白边
调整方框宽度、颜色等
还是上面的那个 paint 函数,第 92 行
这里的 1 和 2.0 控制方框的宽度
这个文件最开头的几行
控制着大部分的颜色(rgba),自行研究即可
个人倾向于将选中的方框填充色和方框颜色一致,所以第 134 行
改成了
这里的 self.line_color 就是边框、标签的颜色
修改标签列表大小

简单粗暴的方法是在第 930 行后面插入一句改变大小
一个比较好的方案(未完全测试过)是将 libs\labelDialog.py 中的 QListWidget 改成 QTableWidget,这样可以一行显示多个标签
以上的代码替换掉源代码 39~45 行

修改快捷键
第 210 行以后一系列的代码
这里,action 的第 3 个参数就是快捷键
去除自动选择
第 1116 行开始的这 3 行代码删除即可
这样打开图片的时候就不会自动选择最后一个标签了

后记:PyQt 里面是不是统一没有 property, 感觉很多东西都要调函数……