如何在使用 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 端的点列表。
我有许多与图像关联的路径,使用 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 端的点列表。