c++ 将关键点转换为mat或将它们保存到文本文件opencv

我在(opencv开源)中提取了SIFT功能,并将它们提取为关键点.现在,我想将它们转换为Matrix(带有x,y坐标)或将它们保存在文本文件中……

在这里,您可以看到用于提取关键点的示例代码,现在我想知道如何将它们转换为MAT或将它们保存在txt,xml或yaml中…

cv::SiftFeatureDetector detector;
std::vector<cv::KeyPoint> keypoints;
detector.detect(input, keypoints);
最佳答案
转换为cv :: Mat如下.

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);

写入filestorage是

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

detector.write(fs);
detector.write(fs2);

转载注明原文:c++ 将关键点转换为mat或将它们保存到文本文件opencv - 代码日志