Tôi đang cố gắng học OpenCV, và là một cứng đầu, tôi đang cố gắng để chạy các thuật toán sau đây:OpenCV yếu tố truy cập từ Mat
cv::Mat cur_features;
cv::goodFeaturesToTrack(current_image, cur_features, 400, 0.01, 0.01);
Bây giờ, là cá nhân lì lợm, tôi quan tâm để xem những gì cur_features đang nắm giữ ... Tôi mong đợi một 400x2 cv :: Mat nhưng thay vì tôi nhận được một 400x1 cv :: Mat
Không to lớn, tôi nghĩ rằng đó có thể là chỉ số trực tiếp. Tuy nhiên, đối với CUỘC SỐNG của tôi, tôi KHÔNG THỂ trích xuất một giá trị từ cur_features.at (0) và in ra.
Tôi đang làm gì sai? Tôi đã thấy goodFeaturesToTrack_Demo.cpp. Một số điều cần lưu ý trên bản demo đó khác với tôi. Tôi đã thử các cuộc gọi sau đây cho ví dụ đó:
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.
Bất kỳ ai có thể dẫn tôi đến một số tài liệu giải thích cách đạt được mục tiêu của tôi không? Các goodFeaturesToTrack cho bạn biết nó trả về một OutputArray là một vector của các góc, nhưng không nơi nào nó mô tả loại của các góc đó là gì. Ở đâu trong tài liệu này tôi sẽ tìm câu trả lời này trong trường hợp tôi nhận được nó với các phương pháp khác?
Edit: Ngoài ra, whats điểm của Mat :: loại(). Tôi không thể tìm thấy nơi mà giá trị trả lại có thể được giải thích ... Tôi đang tìm một điều tra trong tài liệu nhưng gặp khó khăn khi tìm kiếm nó.
std::cout << current_image.type() << std::endl; //This returns 0
std::cout << cur_features.type() << std::endl; //This returns 13
Đối với kiểu liệt kê, hãy tìm trong loại_c.h, bạn sẽ tìm thấy '#define CV_8UC1 CV_MAKETYPE (CV_8U, 1)' và v.v. Đó là loại() trả về – Pablo