OpenCV: Trouvez tous les non-zéro coordonnées d'un binaire Mat image
Je suis atttempting pour trouver le non-zéro (x,y) les coordonnées d'une image binaire.
J'ai trouvé quelques références à la fonction countNonZero()
qui ne prend en compte que les non-zéro coordonnées et findNonZero()
dont je ne suis pas sûr de la façon de l'accès ou de l'utilisation, puisqu'il semble avoir été retiré de la documentation complètement.
Cette est le plus proche de la référence que j'ai trouvé, mais pas encore utile à tous. J'apprécierais toute aide spécifique.
Edit:
- Pour spécifier, c'est à l'aide de C++
findNonZero()
description au sein d'opérations sur le tableau de la section actuellement.OriginalL'auteur DMor | 2013-10-08
Vous devez vous connecter pour publier un commentaire.
Ici est une explication de la façon dont
findNonZero()
enregistre non nulle éléments. Les codes suivants doivent être utiles à l'accès non-zéro coordonnées de votre binaire image. Méthode 1 utiliséfindNonZero()
dans OpenCV, et la Méthode 2 vérifié tous les pixels de trouver un non-zéro (positif).Méthode 1:
Méthode 2:
Essayez le code complet je viens de l'éditer.
même erreur, j'ai déjà ceux inclus
Pouvez-vous compilé d'autres programmes correctement dans OpenCV?
boucle de commande doit être inversée: itérer sur les lignes, les colonnes. OpenCV Mat conteneur est stocké en ligne ordre majeur, donc itérer sur les colonnes, le cache est hostile.
OriginalL'auteur WangYudong
Il y a le code source suivant qui a été fourni pour OpenCV 2.4.3, qui peut être utile:
Note - il ressemble à la signature de la fonction était mauvais, j'ai donc changé la sortie
vector
passer par référence.Voir ci-dessus edit - on dirait le vecteur a été transmis par valeur, donc j'ai modifié le code et ajout d'une note.
Il apparaît toujours vide. J'ai vérifié à l'aide de coordonnées.taille() et elle est égale à 0. (variables expliquées dans pastebin lien ci-dessus).
Alors peut-être vous n'êtes pas le passage d'un canal unique image en niveaux de gris? Le code ci-dessus suppose CV_8UC1 et aurait besoin de changer pour autre chose. Si ce n'est pas cela, alors il est possible que votre image n'ont pas de zéro de pixels? Le code est assez simple.
Je crois qu'il pourrait être possible que ses dans un format différent, mais @WangYudong, son deuxième méthode a fonctionné (je n'en suis pas sûr si applicable).
OriginalL'auteur Roger Rowland
vous pouvez le trouver sans l'aide de findNonZero() cette opencv méthode. plutôt u peut obtenir simplement à l'aide de 2 boucles for. voici l'extrait de code. j'espère que ça peut aider à u.
**
**
OriginalL'auteur Tanusree