首页 > 解决方案 > 在图像上绘制曲线

问题描述

我有一个带有一些点的图像,我需要在图像上绘制最适合的线。这些点将构成一条多项式线。

这是我到目前为止所得到的:

#The coordinates are filled in earlier (self.lx, self.ly)
z = np.polyfit(self.lx, self.ly, 2)
lspace = np.linspace(0, 100, 100)
draw_x = lspace
draw_y = np.polyval(z, draw_x)   #I am unsure of how to draw it on to the image

标签: pythonimageopencvdraw

解决方案


要在图像上绘制折线,您可以使用 opencv 的折线:

绘制多边形

要绘制多边形,首先需要顶点坐标。将这些点放入一个形状为 ROWSx1x2 的数组中,其中 ROWS 是顶点数,它应该是 int32 类型。在这里,我们用黄色绘制一个带有四个顶点的小多边形。

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)

pts = pts.reshape((-1,1,2))

cv.polylines(img,[pts],True,(0,255,255))

注意如果第三个参数为 False,您将获得连接所有点的折线,而不是闭合形状。cv.polylines() 可用于绘制多条线。只需创建要绘制的所有线条的列表并将其传递给函数。所有线条都将单独绘制。与为每条线调用 cv.line() 相比,绘制一组线是一种更好更快的方法。


推荐阅读