Trouver les Contours dans OpenCV?

Lorsque vous récupérez des contours d'une image, vous devez obtenir 2 contours par blob - l'une intérieure et une extérieure. Considérons le cercle ci-dessous - depuis le cercle est une ligne avec un pixel de largeur plus grande que un, vous devriez être capable de trouver deux contours dans l'image de la partie intérieure du cercle et celui de la partie externe.

À l'aide d'OpenCV, je veux récupérer les contours INTÉRIEURS. Cependant, lorsque j'utilise findContours (), je ne semble pas être d'obtenir le contour extérieur. Comment pourrais-je récupérer les contours intérieurs d'une goutte à l'aide d'OpenCV?

Je suis à l'aide de l'API C++, pas du C donc suggérer uniquement des fonctions que l'utilisation de l'API C++. (c'est à dire findContours () plutôt que cvFindContours ())

Grâce.

Trouver les Contours dans OpenCV?

Pouvez-vous nous montrer un peu de code?
Eh bien, je n'ai pas vraiment un code unique. J'ai juste un Tapis je l'ai récupérer à partir de l'appareil photo. J'ai exécuter le savant détecteur de bord sur elle, et puis de trouver les contours à l'aide des findContours (). Tous les contours trouvés sont stockés dans un vector<vector<Point> >. C'est essentiellement tout ce que j'ai donc il n'y a pas beaucoup de point en moi de poster le code réel - c'est juste le processus traditionnel de trouver les contours.
J'ai travaillé un peu avec les contours, mais mon intérêt n'était que le contour extérieur. J'ai essayé colororing un contour, avec " drawContours()'. Qui exspects une sorte de hiérarchie. L'échantillon sur " drawContours()' que j'ai utilisé, n'a pas la couleur des contours intérieurs. Ce que j'essaie de faire ici, c'est que vous avez probablement besoin d'utiliser la hiérarchie de tableau à partir d' 'findContours()' pour les trier. (La raison pour laquelle je ne poste pas une réponse, c'est que ma connaissance de cette hiérarchie est limité, je ne voudrais pas vous tromper sur la question. J'ai fait un peu de tests sur ces et j'ai pu expliquer ma compréhension jusqu'à présent, si vous le demandez.)
Merci de répondre. Si possible, je vous serais reconnaissant si vous pouviez expliquer votre compréhension des hiérarchies jusqu'à présent. Merci.
interne et externe de délimitation des contours peut être consulté à l'aide de la h_next et v_next des pointeurs dans le CvSeq* structure où les contours sont stockées par le findContours() fonction. Voici un lien à partir du livre au sujet de la façon dont c'est organisé (j'ai toujours collaboré avec juste les contours externes, donc il n'y a pas de travail code pour l'afficher): les livres.google.co.dans/...

OriginalL'auteur fdh | 2011-12-09