2015-08-27 3 views
0

Я использую Opencv 3.0 с Python 2.7 для оптического распознавания символов Мне нужно найти точки каждого контура, найденные методом findContours. Когда я отлаживаю, я вижу, что найдено 208 счетов, но мне интересно, как я могу получить к ним доступ.OpenCV - Доступ к переменным cv2.findContours

Вот метод для захвата контуров:

contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) 

мне нужно что-то вроде этого:

cv2.getcontoursPoints(counter) 

ответ

1

у вас уже есть контуры указывают на contours выход, который является список по питона состоит из массива Numpy (x,y) координаты. Позаботьтесь о том, как сказано в documentation у вас есть несколько контуров слоев:

Каждый контур [из countours] хранятся в виде вектора точек.

Так что, если вы напечатаете contours[0], он отобразит список точек. Поэтому, если вы хотите получить точную точку в определенном слое, вам нужно снова детализировать индекс.

+0

Я не хочу их нарисовать. Мне нужны координатные значения для каждой отдельной точки (как int, double или float) для обучения письма моей машине. Я собираюсь использовать эти значения в алгоритме машинного обучения. –

+1

Ну, как сказано в answery, у вас есть значения координат уже в 'contours' ... Что вас беспокоит? – coincoin

+0

т. Е. На первом контуре у меня есть значения [[[532 229]] [[536 229]] [[539 232]] [[539 233]] [[540 234]] [[540 238]] [ 539 239]] [[539 240]] [[536 243]] [[532 243]] [[528 239]] [[528 234]] [[529 233]] [[529 232]]] - I neet чтобы получить эти числа, используя какой-то специальный метод. –

0

Попробуйте

for cnt in contours: print(cnt)

вы сможете увидеть Numpy массив всех контуров.

Смежные вопросы