Удалить строку из массива cv2.HoughLines со специальным значением - PullRequest
0 голосов
/ 03 октября 2019

Я сканирую картинку с помощью opencv для строк. И в соответствии с документацией все работает как запланировано.

lines = cv.HoughLines(edges,1,np.pi/180,200)
for line in lines:
    rho,theta = line[0]

Мои фотографии состоят из множества строк, и я хочу продолжить с горизонтальными линиями, прежде чем делать

for line in lines:

Но поскольку записи вложены, я не смог найти правильного решения для удаления элементов. Все записи со строкой 0 = 0 должны оставаться в строках массива.

Я пытался изменить решения этой темы numpy удалить элемент списка из списка списков но элементы не находятся в списке списка. Отдельные элементы находятся в списке списка.

Пример: я хочу, чтобы остался только четвертый элемент.

lines = ([[564.,1.57079637]],[[566.,1.57079637]],[[547.,1.57079637]],[[549.,0]],[[549.,1.57079637]],[[496.,1.57079637]])

1 Ответ

0 голосов
/ 04 октября 2019

Ваш пример lines - это набор вложенных списков. Возвращаемое значение cv.HoughLines, однако, представляет собой пустой массив формы (n, 1,2). Чтобы создать работоспособный пример для cv.HoughLines, мы будем использовать lines = np.array(([[564.,1.57079637]],[[566.,1.57079637]],[[547.,1.57079637]],[[549.,0]],[[549.,1.57079637]],[[496.,1.57079637]])).

. Вы можете использовать понимание списка:

lines = np.array([x for x in lines if x[0][1] == 0])

Результат:

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