Comment consulter/modifier un élément de la matrice dans OpenCV? Pourquoi à() est templatized?

Dois-je savoir Mat type d'élément pour utiliser at() correctement? Par exemple, si j'ai

Mat rose = Mat(1,180, CV_64F, 0);

alors je peux appeler

rose.at<short>(i,j)++;

Si non, alors le modèle argument dois-je utiliser?

Pourquoi Mat::at est templatized tout Mat lui-même ne l'est pas?

Mise à JOUR

Cette question contenait un exemple de code avec une autre erreur, qui est maintenant ici: Comment remplir la Matrice de zéros dans OpenCV?

En gros, oui. Il est de votre responsabilité de connaître ou de découvrir avec Mat.type().
Vérifiez aussi ceci.
Ainsi, dans l'exemple ci-dessus, je sais que le type ou pourrait le découvrir. Quelle est la prochaine étape? CV_64F est une valeur d'exécution, je ne peux pas l'utiliser dans at paramètre du modèle.
Vous la connaissez. CV_64f est pour "la Vision par Ordinateur _ 64 bits à virgule flottante de type". C'est le double précision en virgule flottante ou communément connu comme double. Vous pouvez en apprendre plus dans OpenCV documentation.
Mat rose = Mat(1,180, CV_64F, 0); et rose.at<double>(i,j)++;

OriginalL'auteur Suzan Cioc | 2013-06-11