labelme 使用教程

效率与质量齐飞,标注工具全面横评里详细对比了不同标注工具的优势和劣势

labelme是使用python写的基于QT的跨平台图像标注工具,可用来标注分类、检测、分割、关键点等常见的视觉任务,支持VOC格式和COCO等的导出,代码简单易读,是非常利于上手的良心工具.

安装

最简单的方式莫过于通过pip安装 pip install labelme

但是由于我们要在其基础上二次开发,所以只能 pip install -e .

cd examples/tutorial
labelme apc2016_obj3.jpg  # specify image file
labelme apc2016_obj3.jpg -O apc2016_obj3.json  # close window after the save
labelme apc2016_obj3.jpg --nodata  # not include image data but relative image path in JSON file
labelme apc2016_obj3.jpg \
  --labels highland_6539_self_stick_notes,mead_index_cards,kong_air_dog_squeakair_tennis_ball  # specify label list

# semantic segmentation example
cd examples/semantic_segmentation
labelme data_annotated/  # Open directory to annotate all images in it
labelme data_annotated/ --labels labels.txt  # specify label list with a file

可视化

可视化真值: labelme_draw_label_png apc2016_obj3_json/label.png
可视化真值并导出数据: labelme_json_to_dataset apc2016_obj3.json -o apc2016_obj3_json

代码解析

程序的入口在__main__.py中的main函数, 其处理了外部传进的命令行后传递给MainWindow,还实现了不同语言的适配.MainWindows的实现在app.py中, 初始化时构建了菜单、docker栏、快捷键等, 所有的标注都会绘制在一个canvas上, shape.py用于绘制已经标注的图形,主要看mousePressEvent、mouseMoveEvent和mouseReleaseEvent三个鼠标回调函数

mousePressEvent是鼠标按下时消息的回调,有一个ev参数作为输入,保存了鼠标按下时的上下文,首先将鼠标的坐标由窗口坐上角转换为以点击点为中心的坐标, 然后判断按下的是鼠标左键还是右键,如果是左键,还需进一步判断当前所属的模式是创建制模式还是修改模式,如果是创建模式,则需要创建选中元素的点,将其添加到形状列表中,而修改模式则需要判断是否选中了某个元素,然后将其坐标进行修改.如果按下的是右键则默认修改模式,直接拖动点.

mouseMoveEvent用于绘制元素添加的中间过程,以便有更清晰的提示,判断逻辑与之前类似,还判断了已有元素是否处于选中状态,如果是则将其高亮显示.

mouseReleaseEvent用于处理鼠标抬起的回调,主要就是恢复鼠标按下时修改的光标形状,如果有修改则setDirty用于标识需要保存.

目前labelme的标签并不会显示在标注点而是docker栏上,这很不方面我们直接看,因此需要增加这项能力.

在def drawVertex(self, path, i):最后加上就可以了

        if i == 0:
            myFont = QtGui.QFont("Times", 20)
            mypoint = point - QtCore.QPointF(0,d)
            path.addText(mypoint,myFont,self.label)
  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值