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

标签 c++ opencv vector mat keypoint

我在(opencv开源)中提取了SIFT特征,它们被提取为关键点。现在,我想将它们转换为矩阵(使用它们的 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);

写入文件存储是

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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7643342/

相关文章:

C++ 为一个字符设置值**

python - 在Anaconda中播放文件中的视频

c++ - 类对象的 vector 及其实例化

r - data.frame 中所有变量对的元素乘法总和

c++ - 通过 OpenCV 的相机标定从一个物体得到两个不同的结果

c++ - 调用具有多重继承的添加类的成员

c++ - 这里如何正确使用for_each?

iphone - IOS/iPad/iPhone 的最大速度

opencv - 使用 opencv 和 c++ 同时搜索多种颜色

c++ - 使用递归生成斐波那契数列的静态 vector 用法