5 votes

Comment extraire des formes géométriques simples à partir de contours dans opencv

J'ai un Mat contours et j'ai fait une approximation de chaque contour con approxPolyDP . Ce que je veux faire maintenant est de détecter des formes comme le rectangle, le triangle, le cercle. Et par exemple, les redessiner dans une couleur différente ou en utilisant le canevas, etc.

Existe-t-il un moyen d'utiliser les contours ? Comment puis-je accéder à des points dans Mat contours et les simplifier un peu plus (en supprimant les déformations ou si deux points significatifs sont si proches que je peux sans risque en supprimer un) ?

Je développe en Java (Android), donc toutes les méthodes/types C/C++ ne sont pas disponibles pour moi (ou un appel JNI serait un gaspillage).

1voto

alistair Points 659

Les contours sont renvoyés sous forme de vecteur > contours. Vous pouvez y accéder facilement en C++ en faisant quelque chose comme :

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

Si vous y accédez à l'aide d'un Mat, vous devrez tester l'arrangement produit. Cela devrait être très facile, même si, ceci dit, JNI et Android opencv sont une plaie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X