我的照片如下。它的形状是720x1280。我想绘制一条线以适应这种白色图案。
我用y范围代替x是因为y更容易拟合为二阶多项式。
y_range = np.linspace(0, 719, num=720) # to cover same y-range as image
fit = np.polyfit(y_range, image, 2) # image.shape = (720, 1280)
print(fit.shape) # (3, 1280)
我希望fit.shape = (3,)
,但事实并非如此。
fit
计算曲线如下。 f = fit[0]*y_range**2 + fit[1]*y_range + fit[2]
谢谢。
答案 0 :(得分:1)
你的image
是2-D,这就是问题所在。二维图像包含有关每个点坐标的信息,因此您只需将其放入合适的格式。
由于您似乎只对白色像素的位置感兴趣(而不是每个像素的特定值),因此请将图像转换为二进制值。我不知道您image
的特定值,但您可以这样做:
import numpy as np
curoff_value = 0.1 # this is particular to your image
image[image > cutoff_value] = 1 # for white pixel
image[image <= cutoff_value] = 0 # for black pixel
获取白色像素的坐标:
coordinates = np.where(image == 1)
y_range = coordinates[0]
x_range = coordinates[1]
fit = np.polyfit(y_range, x_range, 2)
print(fit.shape)
按预期返回(3, )
。