我正在尝试像这样在python中制作傅立叶系列动画
https://www.youtube.com/watch?v=QVuU2YCwHjw&app=desktop
因此,要从图像中执行此操作,我需要形成闭合曲线的点的列表。 我可以这样处理简单的图像:
通过对图像进行阈值处理并找到轮廓,默认情况下,轮廓对象的点在曲线路径中有序。
但是,如何处理像这样的复杂图像
我可以使用canny查找轮廓(已经为黑色),但是如何将其转换为近似闭合曲线的形式。
这是我在简单情况下所做的
ret,thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
cts=contours[0].reshape(-1,2)
plt.plot(cts[:,0],cts[:,1])
plt.show()
这会产生一个像这样的漂亮情节(反转不是问题) 但这在复杂图像中失败,因为存在多个轮廓
所以基本上是TLDR:我如何结合Canny发现的边缘以形成一条闭合曲线(或其他任何闭合曲线的方法)?
注意:我要求将点按轮廓排列,以便在这样做时
plt.plot(x,y)
我得到了很好的图像轮廓,而不是到处都是交叉的线
感谢您的帮助。