Как извлечь простые геометрические формы из контуров в opencv - PullRequest
5 голосов
/ 12 марта 2012

У меня есть Mat contours, и я аппроксимировал каждое contour с approxPolyDP. То, что я хочу сделать сейчас, это обнаружение форм, таких как прямоугольник, треугольник, круг. И, например, перерисовать их в другой цвет или использовать холст и т. д.

Есть ли способ использовать контуры? Как я могу получить доступ к точкам в Mat contours и немного упростить их (удаляя деформации или если две значимые точки расположены так близко друг к другу, что я могу безопасно удалить одну из них)?

Я занимаюсь разработкой на Java (Android), поэтому не все методы / типы C / C ++ доступны для меня (или вызов JNI будет бесполезным).

1 Ответ

1 голос
/ 16 марта 2012

Контуры возвращаются как векторные> контуры. Вы можете легко получить к ним доступ в C ++, выполнив что-то вроде:

vector<vector<Point> > contours;
findContours(..,contours,...);
contours.at(0).at(0) //first point of first contour

Если вы получаете доступ к ним с помощью мата, вам нужно будет проверить, какое устройство создано. Это должно быть очень легко, хотя, несмотря на это, JNI и android opencv - это боль.

...