如何在使用 paper.js 创建的 opencv (python) 中使用贝塞尔曲线绘制路径

how to draw paths with bezier curves in opencv (python) created with paper.js

我有许多与图像关联的路径,使用 paper.js 应用程序绘制,生成 json 格式的对象:

[[[x,y], [handle1_x, handle1_y], [handle2_x, handle2_y]],  ...].

因此,对于多边形 ("path") 上的每个点,我都有 x、y 和控制曲率的手柄的概念 ("bezier")。

如何将这些路径转换为 ​​python 中的轮廓,以便在图像上绘制这些路径(以获得遮罩)?

OpenCV 中的轮廓是一个点数组,std::vector<cv::Point>

所以我想最简单的方法是在 json 文件中输出曲线所有点的列表,(使用 Paper.js path.getPointAt() - 从 0 偏移到曲线的 "get all points/pixels")然后在 OpenCV.

中创建一个 std::vector<cv::Point>

这会创建更大的 json 文件(曲线像素列表将大于曲线点和手柄列表),除非您真的有大量数据,否则这应该不是问题。如果这是一个问题,您还可以使用 OpenCV-Beziers 之类的东西(我从未使用过它)来计算 OpenCV 端的点列表。