В вашем коде есть случай, когда 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)
Попробовать
:url => employee_url(@employee)
IIRC, * _path является именованным маршрутом, построенным: директива ресурса, которая включает метод, таким образом перезаписывая Ваш: метод =>: удалить
Из моего кода:
<%= link_to_remote "Delete", :url => post_url(post), :method => :delete %>
Только добавить несколько дополнительных деталей: Используя :url => employee_url(@employee)
помогший (из принятого ответа). Другая часть, которая портила меня, была тем, что я ожидал, что HTTP удаляет запрос, но я продолжал получать запросы POST с параметром "_method" (автоматически добавленный направляющими), который был установлен удалить.
Таким образом, это звонило, надлежащие уничтожают действие, которое я доказал путем добавления нескольких операторов отладки к контроллеру. Да, мой удалять код был неправильным в контроллере, таким образом, он действительно не удалял, когда я думал, что это было.