OpenCV: как получить доступ к одному контуру в O (1) после вызова cvFindContours ()? - PullRequest
2 голосов
/ 09 января 2011

Я использую OpenCV для сравнения двух объектов в двух изображениях.Предположим, я знаю пару больших двоичных объектов, которые могут быть похожими, и знаю их индексы в массивах контуров (генерируемых cvFindContours ()), как я могу получить доступ к одному контуру в постоянное время?

Самый громоздкий способ - это многократно использовать операцию ссылки (contours = contours-> h_next), но мне интересно, есть ли более быстрый способ получить один контур в массиве.

Я использую CV_RETR_EXTERNAL и CV_CHAIN_APPROX_NONE при вызове cvFindContours ().

Спасибо!-JC

1 Ответ

2 голосов
/ 10 января 2011

Я думаю, что функция cvGetSeqElem делает то, что вы хотите. Цитируя OpenCV docs : «Функция имеет O (1) временную сложность, предполагая, что количество блоков намного меньше, чем количество элементов» Я полагаю, что «блоки» в данном контексте означают «контуры».

Кроме того, взгляните на cvCvtSeqToArray ( ссылка ), которая копирует последовательность в один непрерывный блок памяти.

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