当前位置:   article > 正文

labelme 使用教程

labelme

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

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

安装

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

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

  1. cd examples/tutorial
  2. labelme apc2016_obj3.jpg # specify image file
  3. labelme apc2016_obj3.jpg -O apc2016_obj3.json # close window after the save
  4. labelme apc2016_obj3.jpg --nodata # not include image data but relative image path in JSON file
  5. labelme apc2016_obj3.jpg \
  6. --labels highland_6539_self_stick_notes,mead_index_cards,kong_air_dog_squeakair_tennis_ball # specify label list
  7. # semantic segmentation example
  8. cd examples/semantic_segmentation
  9. labelme data_annotated/ # Open directory to annotate all images in it
  10. labelme data_annotated/ --labels labels.txt # specify label list with a file

可视化

  1. 可视化真值: labelme_draw_label_png apc2016_obj3_json/label.png
  2. 可视化真值并导出数据: 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):最后加上就可以了

  1. if i == 0:
  2. myFont = QtGui.QFont("Times", 20)
  3. mypoint = point - QtCore.QPointF(0,d)
  4. path.addText(mypoint,myFont,self.label)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/467218
推荐阅读
相关标签
  

闽ICP备14008679号