一、背景
随着项目的逐步开展,数据标注的工作量越来越大,为了提高标注效率和标注准确性,需要对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"),

最低0.47元/天 解锁文章
8795





