web-dev-qa-db-fra.com

OpenCV comment trouver une liste de composants connectés dans une image binaire

J'utilise OpenCV pour une application C++. J'ai une image binaire 8 bits qui contient des objets. Les objets sont tous colorés 255, tandis que tout en arrière-plan est coloré 0. Chaque objet n'a pas de pixels vacants (noirs) à l'intérieur. En d'autres termes, chaque objet est entièrement blanc. Les objets ne sont PAS connectés les uns aux autres. Voici ce que je veux en extraire:

Je veux extraire une sorte de liste d'objets, à partir de laquelle j'ai une idée de l'emplacement de chaque objet dans cette liste. Cela pourrait être en utilisant cvConnectedComponents () ou autre chose. J'ai besoin d'une indication de l'emplacement de chaque objet dans l'image. Cela pourrait être sous la forme d'un rectangle englobant pour chaque objet ou médiane ou centre basé sur un calcul ou tout ce qui me donne une mesure de l'emplacement des objets dans l'image. Avez-vous des conseils sur les fonctions d'OpenCV à examiner?

14
Cricketer

Vous devez cv :: floodFill les contours retournés par cv :: findCountours. Voir cet exemple pour findContours, et celui-ci pour floodFill

11
Francesco Callari

À partir de la version 3.0, OpenCV a la fonction connectedComponents .

30