Можно ли получить пиксельные координаты cv2.line без рисования (в поисках увеличения скорости)? - PullRequest
1 голос
/ 28 апреля 2020
def func_get_line_coords(blank_canvas, coord_pairs_to_draw):

    to_return = list()
    for idx, coord_pair in enumerate(coord_pairs_to_draw):
        cv2.line(blank_canvas, coord_pair[0], coord_pair[1], idx+1, 1)
        to_return.append(np.argwhere(blank_canvas==idx+1))
    return to_return

blank_canvas = np.zeros((1000,1000), dtype=np.uint8)
coord_pairs_to_draw = [[(23, 76), (900, 4)], [(890, 640), (32, 500)], [(876, 43), (29, 900)], [(1, 3), (709, 82)], [(47, 23), (900, 900)]]
pixel_coords = func_get_line_coords(blank_canvas, coord_pairs_to_draw)

В соответствии с заголовком я пытаюсь получить список координат для линии, полученной между 2 координатами с помощью cv2. Я не заинтересован в самом графике, и кажется, что необходимость фактически нарисовать линию, а затем найти совпадающие координаты, может оказаться ненужной затратами . Выше приведена самая быстрая реализация, которую я могу придумать (это игрушечный пример) с использованием этого типа подхода.

Я пытаюсь придерживаться результатов, «как бы вырабатывал opencv», чтобы избежать несоответствий со значениями, если я позже заговор с самим opencv (я не уверен, может ли точное положение пикселя варьироваться между различными алгоритмами, которые использует opencv).

EDIT : я немного отредактировал вопрос, чтобы передать это У меня есть подход (путем рисования и извлечения), но я стремлюсь ускорить это и думал, что устранение ничьей, тогда чтение может быть способом сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...