sto cercando di imparare OpenCV, e di essere un duro testa, sto cercando di eseguire il seguente algoritmo:OpenCV elemento di accesso da Mat
cv::Mat cur_features;
cv::goodFeaturesToTrack(current_image, cur_features, 400, 0.01, 0.01);
Ora, essendo l'individuo testa dura, mi interessa per vedere cosa cur_features sta tenendo ... Mi aspettavo un 400x2 cv :: Mat ma invece ho ottenuto un 400x1 cv :: Mat
Nessun biggy, penso che sia forse un indice diretto. Tuttavia, per LIFE of me NON POSSO estrarre un valore da cur_features.at (0) e stamparlo.
Cosa sto sbagliando? Ho visto il buonFeaturesToTrack_Demo.cpp. Alcune cose da notare su quella demo che differiscono per la mia. Ho provato le seguenti chiamate dato quell'esempio:
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.
Qualcuno potrebbe indirizzarmi verso una documentazione che spiega come raggiungere il mio obiettivo? GoodFeaturesToTrack ti dice che restituisce un OutputArray che è un vettore di angoli, ma da nessuna parte descrive il tipo di questi angoli. Dove nella documentazione dovrei cercare questa risposta nel caso in cui la ottenga con altri metodi?
Edit: Inoltre, cosa è il punto di Mat :: tipo(). Non riesco a trovare dove si possa spiegare il valore restituito ... Sto cercando un'enumerazione nella documentazione, ma non riesco a trovarla.
std::cout << current_image.type() << std::endl; //This returns 0
std::cout << cur_features.type() << std::endl; //This returns 13
Per quanto riguarda l'enumerazione dei tipi, guarda in types_c.h, troverai '#define CV_8UC1 CV_MAKETYPE (CV_8U, 1)' e così via. Questo è il tipo() restituisce – Pablo