Estoy intentando aprender OpenCV, y siendo un cabeza dura, estoy tratando de ejecutar el algoritmo siguiente:OpenCV elemento de acceso desde Mat
cv::Mat cur_features;
cv::goodFeaturesToTrack(current_image, cur_features, 400, 0.01, 0.01);
Ahora bien, ser la persona cabeza dura, estoy interesado para ver qué cur_features está conteniendo ... esperaba un 400x2 cv :: Mat, pero en su lugar obtuve un cv de 400x1 :: Mat
No hay problema, creo que es un índice directo. Sin embargo, por la VIDA de mí NO PUEDO extraer un valor de cur_features.at (0) e imprimirlo.
¿Qué estoy haciendo mal? He visto las goodFeaturesToTrack_Demo.cpp. Algunas cosas para destacar en esa demostración que difieren para la mía. Probé los siguientes llamadas dado ese ejemplo:
std::cout << cur_features.size() << std::endl; // This throws a compile time error even though its in the example
std::cout << cur_features.at<Point2f>(0).x << std::endl; //This throws a run time error.
¿Alguien podría dirigir a algún tipo de documentación que explica cómo lograr mi objetivo? El goodFeaturesToTrack te dice que devuelve un OutputArray que es un vector de esquinas, pero en ninguna parte describe el tipo de esas esquinas. ¿En qué parte de la documentación buscaría esta respuesta en caso de que la obtenga con otros métodos?
Editar: También, cuál es el punto de Mat :: tipo(). No puedo encontrar dónde se puede explicar el valor devuelto ... Estoy buscando una enumeración en la documentación pero tengo problemas para encontrarla.
std::cout << current_image.type() << std::endl; //This returns 0
std::cout << cur_features.type() << std::endl; //This returns 13
En cuanto a la enumeración de tipo, busque en types_c.h, encontrará '#define CV_8UC1 CV_MAKETYPE (CV_8U, 1)' y así sucesivamente. Eso es lo que type() devuelve – Pablo