在我的代码中,我将关键点插入到 vector 中,如代码所示,谁能告诉我如何将其保存到文本文件中。
Mat object = imread("face24.bmp", CV_LOAD_IMAGE_GRAYSCALE);
if( !object.data )
{
// std::cout<< "Error reading object " << std::endl;
return -2;
}
//Detect the keypoints using SURF Detector
int minHessian = 500;
SurfFeatureDetector detector( minHessian );
std::vector<KeyPoint> kp_object;
detector.detect( object, kp_object );
我想将 kp_object vector 保存到一个文本文件中。
您可以使用 FileStorage 写入和读取数据,而无需编写自己的序列化代码。对于写作,您可以使用:
std::vector<KeyPoint> keypointvector;
cv::Mat descriptormatrix
// do some detection and description
// ...
cv::FileStorage store("template.bin", cv::FileStorage::WRITE);
cv::write(store,"keypoints",keypointvector;
cv::write(store,"descriptors",descriptormatrix);
store.release();
对于阅读,你可以做类似的事情:
cv::FileStorage store("template.bin", cv::FileStorage::READ);
cv::FileNode n1 = store["keypoints"];
cv::read(n1,keypointvector);
cv::FileNode n2 = store["descriptors"];
cv::read(n2,descriptormatrix);
store.release();
这当然是针对二进制文件的。这实际上取决于您想要促进什么;如果你以后想把txt文件解析成Matlab,你会发现它很慢。
我是一名优秀的程序员,十分优秀!