是否有人知道如何使用Canvas中的Canny Edge Detection创建形状?
答案 0 :(得分:5)
我假设你已根据问题的制定方式获得了Canny edge detection implemented -
您可以使用方法such as this(用Java编写,但应该很容易转换为JavaScript)和/或可能使用line-fitting approaches(统计数据)。
本质上是你必须找出连接的像素,并根据边缘检测的结果自己创建多边形对象/数组。
一旦连接了像素,就可以使用缩减算法,例如Ramer–Douglas–Peucker算法(JavaScript implementation here),以避免多边形包含类似斜线的每一个点,依此类推。
你会遇到各种各样的挑战,例如由于原始图像中的噪音太大而导致的短分段线条或“弱线”,“线条”的集群,这使得很难找到如何将它们作为多边形连接
答案 1 :(得分:0)
我不知道有任何库,但你可以:
getImageData()
访问像素数据的字节[] 通过这种方式,您可以找到高对比度区域(边缘。)
编辑我同意肯 - 我可能误解了这个问题。
除了肯的答案,如果你知道你正在寻找什么样的形状,那么你可能想看看Hough Transform,它非常适合检测线条,椭圆和其他可以几何形状的形状仅使用几个参数定义。