Я пытаюсь нарисовать стрелку серого цвета между двумя точками на изображении. Вот код, над которым я работаю:
t = 0
while t < constants.total_time:
t += constants.time_step
# Get new coordinates and orientation using time step
x += (0.5 * constants.robot_radius * (l_vel + r_vel) * np.cos(theta) * constants.time_step)
y += (0.5 * constants.robot_radius * (l_vel + r_vel) * np.sin(theta) * constants.time_step)
theta += ((constants.robot_radius / constants.wheel_distance) * (r_vel - l_vel) *
constants.time_step)
# Plot curve on map
# cv2.line(self.map_img, (parent_node[1], self.map_img[0] - parent_node[0]),
# (x, self.map_size[0] - y), color=self.grey)
cv2.arrowedLine(self.map_img, (parent_node[1], self.map_img[0] - parent_node[0]), (x, self.map_size[0] - y),
(128, 128, 128))
Я попытался передать список, а также кортеж, используя переменную. Теперь я использую постоянный кортеж. Я использовал этот тип задания раньше, и он работал без каких-либо проблем. Теперь я не знаю, что отличается. Тем не менее, я продолжаю получать эту ошибку во время выполнения моего кода:
line 221, in show_exploration
(128, 128, 128))
TypeError: only size-1 arrays can be converted to Python scalars
Строка 221 - последняя строка в приведенном выше фрагменте кода. Я уже пробовал решения различных потоков, которые обсуждают аналогичную ошибку. Пожалуйста, помогите мне предоставить правильный тип входного аргумента для цвета.
Решение:
Укажите self.map_size [0], а не self.map_img [0] в cv2.arrowedLine (....)
cv2.arrowedLine(self.map_img, (parent_node[1], self.map_size[0] - parent_node[0]), (x, self.map_size[0] - y),
(128, 128, 128))