L'accès à un élément de la matrice dans le “Tapis” de l'objet (pas le CvMat objet) en C++, OpenCV
Comment accéder aux éléments par ligne, col en OpenCV 2.0 nouveau "Mat" de la classe? La documentation est en lien ci-dessous, mais je n'ai pas été en mesure de faire tout son sens.
http://opencv.willowgarage.com/documentation/cpp/basic_structures.html#mat
Vous devez vous connecter pour publier un commentaire.
Sur la documentation:
http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html#mat
Il dit:
Qui est, vous pouvez utiliser:
Peut-être qu'il est plus facile d'utiliser le
Mat_
classe. C'est un wrapper de modèle pourMat
.Mat_
a laoperator()
surchargé afin d'avoir accès aux éléments.Mat
?Les idées fournies ci-dessus sont bonnes. Pour un accès rapide (dans le cas où vous souhaitez faire une application en temps réel), vous pouvez essayer ce qui suit:
Pointeur d'accès est beaucoup plus rapide que le Tapis.at<> l'accès. Espérons que cela aide!
Mat.at
version?Basé sur ce que @J. Calleja dit, vous avez deux choix
Méthode 1 - accès Aléatoire
Si vous voulez d'accès aléatoire, l'élément de Tapis, il suffit simplement d'utiliser
Méthode 2 - un accès Continu
Si vous voulez un accès continu, OpenCV offre Tapis de itérateur compatible avec
STL iterator
et c'est plusC++
styleou
Si vous avez des difficultés à comprendre comment la Méthode 2, j'emprunte l'image d'un billet de blog dans l'article Dynamique à Deux dimensions des Tableaux en C, ce qui est beaucoup plus intuitif et compréhensible.
Voir l'image ci-dessous.
OCV va sortir de sa façon de faire en sorte que vous ne pouvez pas le faire sans connaître le type d'élément, mais si vous voulez un facilement codable mais pas très efficace pour lire ce type agnostically, vous pouvez utiliser quelque chose comme
Pour bien faire, vous devez connaître le type de bien. L'at<> la méthode est la manière la plus sûre, mais l'accès direct à l'pointeur de données est généralement plus rapide si vous le faites correctement.