【标注工具】labelme5.0.1自定义功能——添加水平线标注及显示信息

一、背景

随着项目的逐步开展,数据标注的工作量越来越大,为了提高标注效率和标注准确性,需要对labelme的功能进行扩充,更好地适应标注需求,同时后期也能将数据标注工作顺利交付出去。

本次标注需要一个rectangle,一条水平line,一个point,并计算三者之间的相对位置关系,将计算结果显示到界面上,有助于精细化调整,因此需要添加水平线标注及显示信息两个功能。

二、具体工作

1. 添加水平线HLine标注

全局搜索“line”,仿照“line”的生成方式添加“hline”。需要修改的文件内容如下:

(1)utils/shape.py

Line36 后面添加代码

# 新增shape_type
elif shape_type == "hline":
    assert len(xy) == 2, "Shape of shape_type=hline must have 2 points"
    draw.line(xy=xy, fill=1, width=line_width)
(2)utils/canvas.py

Line103 createMode()中添加代码

def createMode(self, value):
        if value not in [
            "polygon",
            "rectangle",
            "circle",
            "line",
            "hline",    # 添加hline类型
            "point",
            "linestrip",
        ]:

 Line236 后面添加代码段

# 添加水平线标注方法
elif self.createMode == "hline":
    pos2 = pos
    pos2.setY(self.current[0].y())    #将第二个点的y坐标替换为第一个点的y坐标
    self.line.points = [self.current[0], pos2]
    self.line.close()

 Line362 mousePressEvent()中添加

elif self.createMode in ["rectangle", "circle", "line", "hline"]:    # 添加hline
    assert len(self.current.points) == 1
    self.current.points = self.line.points

Line837 undoLastLine()中添加

elif self.createMode in ["rectangle", "line", "circle", "hline"]:
    self.current.points = self.current.points[0:1]
(3)app.py

 Line351 后面添加代码段

# 创建水平线方法
createHLineMode = action(
    self.tr("Create HLine"),
    lambda: self.toggleDrawMode(False, createMode="hline"),
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值