加载保存的 SURF 关键点
Loading saved SURF keypoints
我正在检测图像中的 SURF 特征,然后将它们写入yml
文件。然后,我想再次从yml
文件中加载特征以尝试检测对象,但目前我在加载关键点以在图像上绘制它们时遇到问题。
我正在这样写关键点:
cv::FileStorage fs("keypointsVW.yml", cv::FileStorage::WRITE);
write(fs, "keypoints_1", keypoints_1);
fs.release();
我试图这样阅读它们:
cv::FileStorage fs2("keypointsVW.yml", cv::FileStorage::READ);
read(fs2, "keypoints_1", keypoints_1);
fs2.release();
但这会产生许多错误。
检测和绘制代码:
cv::Mat img_1 = cv::imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
int minHessian = 400;
cv::SurfFeatureDetector detector(minHessian);
std::vector<cv::KeyPoint> keypoints_1;
detector.detect(img_1, keypoints_1);
cv::Mat img_keypoints_1;
//......write code
//.......read code
drawKeypoints(img_1, keypoints_1, img_keypoints_1);
imshow("keypoints_1", img_keypoints_1);
找到了解决方案,我会在这里发布,以防其他人遇到同样的问题。
std::vector<cv::KeyPoint> testPoints;
cv::FileStorage fs2("keypointsVW.yml", cv::FileStorage::READ);
cv::FileNode kptFileNode = fs2["keypointsVW"];
read(kptFileNode, testPoints);
fs2.release();
相关文章:
- 通过关键点向量从地图中获取地图
- 存储将单个查询图像与多个图像的列表匹配的关键点索引
- 点云库:计算筛选关键点 - 输入云错误
- 在 OpenCV 中计算 SURF 功能之间的距离
- OPENCV关键点断言
- OPENCV 3.2.0无法访问Xfeatures2d中的Surf/Sift
- 删除OpenCV(关键点和描述符)中的匹配项
- opencv 3.1.0中使用SURF时出错
- OpenCV-SURF功能问题
- OpenCV——程序在检测图像关键点的步骤停止运行
- SIFT的OpenCV编号曾经作为第一个关键点数字匹配
- 并行 SURF 和 SIFT 计算
- 未实现 OpenCV SURF 函数
- 在 SURF 中使用欧氏距离
- 基于FlannBasedMatcher的SURF特征提取和关键点匹配
- 如何显示相应的关键点
- 如何在 C++ 的 OpenCV 3.0.0、Visual Studio 2013 中检测关键点、计算描述符并匹配这些描
- 我如何在带有OpenCV的iOS上执行此EmguCV C#代码(使用SURF)
- 加载保存的 SURF 关键点
- 从 SURF 描述符转换为关键点