微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将自由绘制路径的轮廓转换为多边形

如何解决将自由绘制路径的轮廓转换为多边形

我想使用 fabric.js javascript 库分割图像中的多个对象。

在这个例子中,我想分割冲浪板。然后我想将绘制的形状转换为多边形,其外部区域的坐标与图像的像素坐标相对应。

使用fabric.js 内置的免费绘图画笔绘制分割本身非常简单。

enter image description here

然后我可以使用这段代码将绘制路径的坐标转换为多边形:

canvas.on('path:created',function(el){
    var path = el.path.path
  var points = []
  for (var i = 0; i < path.length; i++){
    point = {
      x: Math.round(path[i][1]),y: Math.round(path[i][2])
    }
    points.push(point)
  }

  shape = new fabric.polygon(points,{
      stroke: 'red',opacity: 0.5,strokeWidth: 1,description: 'aaa',fill: 'transparent',});
  canvas.add(shape)
})

红色/黑色链接是我使用鼠标绘制的方式。

enter image description here

关闭绘图模式并将它们拖走后,2个创建的对象(绘图路径和多边形)如下所示。

enter image description here

但是,由于画笔有一定的宽度,并且由于路径区域重叠,我将其转换为多边形的方法效果不佳。

所以我不想要我输出的当前多边形(红色的),而是绿色部分的轮廓。我怎样才能做到这一点?

工作小提琴:https://jsfiddle.net/haw54v9L/3/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。