Ошибка типа: только массивы размера 1 могут быть преобразованы в Python скаляры при использовании функций рисования opencv - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь нарисовать стрелку серого цвета между двумя точками на изображении. Вот код, над которым я работаю:

        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))
...