canvas实现在线标注工具,应用于自动驾驶标注场景,canvas-annotation

369 阅读2分钟

canvas-annotation

  • 一款使用canvas开发的在线标注工具,支持绘制矩形、多边形、线等。
  • 支持单击选中图形、编辑图形;
  • 支持数据导入
  • 支持专注模式(聚焦)
  • 支持图像按鼠标指定位置缩放,支持图像拖拽。

ezgif.com-video-to-gif.gif

annotation

canvas做的在线标注库,适用于自动驾驶标注,目前支持图像的指定位置缩放,拖动,绘制矩形、多边形、线等,库会持续维护。

快速使用

npm i canvas-annitation -S

    import Canvas from 'canvas-annotation'
    let c = new Canvas({
      el: '.c',
      width: 1500, // 画布宽
      height: 800, // 画布高
      imgUrl: '你的图片地址'
    })

目前库支持的形状类型

type: 'rect' | 'polygon' | 'line'

绘制规则

  • 矩形(rect)绘制, 鼠标按下确认第一个点,鼠标移动,矩形绘制,鼠标二次点击确认结束点,绘制结束。

  • 多边形(polygon)绘制, 鼠标单击、移动依次选择点,鼠标双击结束绘制多边形。

  • 线(line)绘制, 同多边形。

选中图形

如果您希望通过鼠标点击选中图形, 你需要先将selectTool设置为'select',此时工具变成了选择工具,这时候就可以选中图形,并对图形进行操作了。

属性

属性名类型描述
elstring|HTMLCanvasElement用于绑定你的canvas标签,可以传id、class或者canvas元素
widthnumber画布宽度
heightnumber画布高度
imgUrlstring要标注的素材图片地址
selectTool'rect'|'polygon'|'line'形状
minScalenumber最小缩放倍数
maxScalenumber最大缩放倍数
activeIndexnumber当前激活的下标, 如果想设置不激活,请把此属性设置为-1
focusModeboolean专注模式,默认false

方法

方法名参数描述
setImage图片地址设置标注图像
fitInWindow使图像自动适配当前视口
addShapeshape图形画布中添加一个图形
resetCanvas重置画布
update更新画布
clear清空画布
getCurrentActiveShape获取当前激活的图形
setMouseCursorpointer|auto|css样式的cursor设置鼠标的样式
setData数组[shape, shape]初始化素材时,需要显示的图形数据
getResultData获取标注结果数据
deleteByIndex图形下标删除对应的图形
destory清空事件监听器,请先调用此函数,在将你的标注实例赋值为null

事件

事件名描述
created初始化canvas完成,事件绑定完成,素材以及图形绘制完成
hoveredShape鼠标移动到图形内触发,有一个回调参数是当前图形
selectedShape鼠标在图形中按下,激活的图形作为此函调函数的参数。

github地址: github.com/fwt-1025/ca… 欢迎pr