Вам нужно передать правильное значение form_key. которые вы получите в ответ на предыдущие пробоотборники. используйте регулярное выражение Extractor для извлечения значения form_key.
"form_key" = "(. +?)"
blockquote>
В вашем коде есть случай, когда line_parameters
может быть одним значением, np.nan
, вместо пары значений (slope, intercept)
. Если наклон ваших подгонок всегда равен > 0
, то left_fit
в конечном итоге будет пустым списком []
:
if slope < 0:
left_fit.append((slope, intercept))
else:
right_fit.append((slope, intercept))
Вывод прогона np.average
для пустого списка - NaN:
np.average([])
# output: np.nan
# also raises two warnings: "RuntimeWarning: Mean of empty slice." and
# "RuntimeWarning: invalid value encountered in double_scalars"
Таким образом, в некоторых случаях left_fit_average = np.average(left_fit) == np.average([]) == np.nan
. np.nan
имеет тип numpy.float64
. Затем ваш код вызывает:
left_line = make_coordinates(image, line_parameters=left_fit_average)
Таким образом, когда вызов на make_coordinates
попадает на линию:
slope, intercept = line_parameters
возможно, что line_parameters
будет np.nan
, в В этом случае вы получаете сообщение об ошибке:
TypeError: 'numpy.float64' object is not iterable
Вы можете исправить ошибку, убедившись, что разумные значения присвоены slope
и intercept
, даже если [ 1122]. Это можно сделать, заключив строку назначения в предложение try... except
:
try:
slope, intercept = line_parameters
except TypeError:
slope, intercept = 0,0
Вам нужно будет решить, подходит ли это поведение для ваших нужд.
В качестве альтернативы, вы можете запретить функции average_slope_intercept
вызывать make_coordinates
во-первых, когда одно из значений x_fit
не имеет ничего интересного:
if left_fit:
left_fit_average = np.average(left_fit, axis=0)
print(left_fit_average, 'left')
left_line = make_coordinates(image, left_fit_average)
if right_fit:
right_fit_average = np.average(right_fit, axis=0)
print(right_fit_average, 'right')
right_line = make_coordinates(image, right_fit_average)