2012-10-18 6 views
0

Je veux copier les données d'un cv :: Mat vers un vecteur std ::. Je pourrais évidemment parcourir tout le Mat et copier chaque valeur une par une, mais j'espérais qu'il pourrait y avoir un moyen plus simple d'utiliser copyTo, clone ou une sorte de manipulation de pointeur.Stockage des données de Cv :: Mat dans un vecteur std ::

Quelqu'un a-t-il un aperçu de ce problème?

Merci

+0

Dans OpenCV est un convertisseur automatique de std :: vector <> en cv :: Mat. Il se peut qu'il y ait aussi le convertisseur opposé. Vérifiez les propriétés InputArray/OuptupArray. Vous pouvez convertir un mat en InputArray, puis utiliser getVector() ou quelque chose de similaire. – Sam

Répondre

2

En supposant que votre tapis est CV_8UC1, vous pouvez le faire ci-dessous. Pour une image multicanal avec un type de pixel différent, je pense que vous serez en mesure de généraliser facilement le code ci-dessus.

+1

Vous pouvez également utiliser le constructeur vectoriel avec les arguments de plage 'std :: vector vec (mat.data, mat.data + nrows * ncols)' directement – remi

Questions connexes