2011-10-04 23 views
5

Tôi đã trích xuất các tính năng SIFT trong (mã nguồn mở opencv) và chúng được trích xuất dưới dạng các điểm chính. Bây giờ, tôi muốn chuyển đổi chúng thành Ma trận (Với tọa độ x, y) hoặc lưu chúng trong một tệp văn bản ...chuyển đổi các điểm chính thành chiếu hoặc lưu chúng vào tệp văn bản opencv

Ở đây, bạn có thể thấy mã mẫu để trích xuất các điểm chính và bây giờ tôi muốn biết cách chuyển đổi chúng thành MAT hoặc lưu chúng trong txt, xml hoặc yaml ...

cv::SiftFeatureDetector detector; 
std::vector<cv::KeyPoint> keypoints; 
detector.detect(input, keypoints); 

Trả lời

7

Chuyển đổi thành cv :: Mat như sau.

std::vector<cv::KeyPoint> keypoints; 
std::vector<cv::Point2f> points; 
std::vector<cv::KeyPoint>::iterator it; 

for(it= keypoints.begin(); it!= keypoints.end();it++) 
{ 
    points.push_back(it->pt); 
} 

cv::Mat pointmatrix(points); 

Viết thư cho filestorage là

cv::FileStorage fs("test.yml", cv::FileStorage::WRITE); 
cv::FileStorage fs2("test2.xml", cv::FileStorage::WRITE); 

detector.write(fs); 
detector.write(fs2); 
Các vấn đề liên quan