Как извлечь простые геометрические формы из контуров в opencv
У меня есть Mat contours
и я приблизил каждый contour
с approxPolyDP
, То, что я хочу сделать сейчас, это обнаружение форм, таких как прямоугольник, треугольник, круг. И, например, перерисовать их в другой цвет или используя холст и т. Д.
Есть ли способ использовать контуры? Как я могу получить доступ к точкам в Mat contours
и немного упростить их (устранение деформаций или, если две важные точки расположены так близко друг к другу, что я могу безопасно удалить одну из них)?
Я занимаюсь разработкой на Java (Android), поэтому не каждый метод / тип C/C++ доступен для меня (или вызов JNI будет пустой тратой).
1 ответ
Контуры возвращаются как вектор> контуры. Вы можете легко получить к ним доступ в C++, выполнив что-то вроде:
vector<vector<Point> > contours;
findContours(..,contours,...);
contours.at(0).at(0) //first point of first contour
Если вы получаете доступ к ним с помощью мата, вам нужно будет проверить, какая договоренность создана. Это должно быть очень легко, хотя, несмотря на это, JNI и Android opencv - это боль.