Python 在图像上画一条曲线?

Python 在图像上画一条曲线?,python,numpy,opencv,image-processing,raspberry-pi,Python,Numpy,Opencv,Image Processing,Raspberry Pi,假设我有一个带有一些黑色像素的图像。 我知道所有黑色像素的坐标,我在找黄线 给定:我的图像中黑色像素的坐标 寻找:最适合黑色像素的黄色多项式 如果我理解正确,现在我用np.poly1d()创建了一个多项式(图像上的黄线)。 但是我怎么能在我的bgr\U img上画这个呢 编辑: 这是我目前的代码: import cv2 import numpy as np img = cv2.imread("white_foo.jpg") #1000x1000 pixel #lets say these

假设我有一个带有一些黑色像素的图像。 我知道所有黑色像素的坐标,我在找黄线

给定:我的图像中黑色像素的坐标

寻找:最适合黑色像素的黄色多项式

如果我理解正确,现在我用
np.poly1d()
创建了一个多项式(图像上的黄线)。 但是我怎么能在我的bgr\U img上画这个呢

编辑:

这是我目前的代码:

import cv2
import numpy as np

img = cv2.imread("white_foo.jpg") #1000x1000 pixel

#lets say these are my black pixels in a white image.
x = np.array([122, 224, 210, 350,  380,  250, 490, 623, 711, 819, 900])
y = np.array([536, 480, 390, 366, 270, 240, 180, 210, 280, 400, 501])

#calculate the coefficients.
z = np.polyfit(x, y, 2)
lspace = np.linspace(0, 1000, 100)

#here I want to draw the polynomial which I calculated with polyfit on my image

cv2.imshow("test", img)
cv2.waitKey(0)


提前感谢

一个快速的谷歌出现了:

这是:

在任何情况下,您都需要在感兴趣的点处计算多项式,然后适当地格式化这些点(多段线希望它们位于int32容器中,格式类似于
[[x_1,y_1],[x_2,y_2],…,[x_n,y_n]
)。然后调用函数

draw_x = lspace
draw_y = np.polyval(z, draw_x)   # evaluate the polynomial

draw_points = (np.asarray([draw_x, draw_y]).T).astype(np.int32)   # needs to be int32 and transposed

cv2.polylines(img, [draw_points], False, (0,0,0))  # args: image, points, closed, color

另一种选择是,查看我对@user8190410的回答。我查看了码头,但无法绘制多项式:/@warped我总是有很多错误/你应该提供一个最小的、完整的、可验证的代码示例——这意味着我们应该能够运行它。你不能希望将二次多项式拟合成正弦波。
draw_x = lspace
draw_y = np.polyval(z, draw_x)   # evaluate the polynomial

draw_points = (np.asarray([draw_x, draw_y]).T).astype(np.int32)   # needs to be int32 and transposed

cv2.polylines(img, [draw_points], False, (0,0,0))  # args: image, points, closed, color