OpenCV iOS:将关键点和描述符存储在文件或任何其他文件中

OpenCV iOS:将关键点和描述符存储在文件或任何其他文件中,ios,opencv,descriptor,keypoint,Ios,Opencv,Descriptor,Keypoint,谁能帮我把OpenCV中的关键点和描述符存储在iOS中。我尝试了NSArray、NSSet、NSDictionary、NSUserdefault,但没有成功。其次,是否可以存储为文件?如果您在xCode中使用openCV框架,则可以使用“std::vector”存储关键点和描述符。要使其正常工作,应将.m文件另存为.mm文件,并且不要忘记使用“using namespace std”。保存文件: -(void)saveKeyPointsImage:(NSString *)imageName ke

谁能帮我把OpenCV中的关键点和描述符存储在iOS中。我尝试了NSArray、NSSet、NSDictionary、NSUserdefault,但没有成功。其次,是否可以存储为文件?

如果您在xCode中使用openCV框架,则可以使用“std::vector”存储关键点和描述符。要使其正常工作,应将.m文件另存为.mm文件,并且不要忘记使用“using namespace std”。

保存文件:

-(void)saveKeyPointsImage:(NSString *)imageName keyPoints:(vector<KeyPoint>)keys{
FileStorage fs("keypoints.yml", FileStorage::WRITE);
write(fs , string([imageName UTF8String]), keys);
fs.release();
}
-(void)saveKeyPointsImage:(NSString*)imageName keyPoints:(vector)键{
FileStorage fs(“keypoints.yml”,FileStorage::WRITE);
写入(fs,字符串([imageName UTF8String]),键);
fs.release();
}
读取文件:

-(vector<KeyPoint>)getKeyPointsImage:(NSString *)imageName{
vector<KeyPoint> keys;
FileStorage fs2("keypoints.yml", FileStorage::READ);
FileNode kptFileNode = fs2[string([imageName UTF8String])];
read( kptFileNode, keys );
fs2.release();
return keys;
}
-(vector)getKeyPointsImage:(NSString*)图像名称{
向量键;
FileStorage fs2(“keypoints.yml”,FileStorage::READ);
FileNode kptFileNode=fs2[string([imageName UTF8String]);
读取(kptFileNode,键);
fs2.释放();
返回键;
}

链接到

Ya我仅使用OpenCV。我已经将所有文件转换为.mm。但问题是如何将所有关键点和描述符存储在一个文件中,然后在匹配时逐个提取。场景是我有100张图像,我从相机扫描了一张图像,以在优化的时间内在这100张图像中找到完美的匹配。一种方法是从相机中提取图像的关键点和描述符,尝试将它们与100张图像中的每个图像的特征线性匹配。每次尝试匹配图像时,提取该图像的特征,如果不匹配,则丢弃它们并继续下一个图像。我知道在这种情况下线性搜索可能会导致最坏的时间情况。如果您有关于这100幅图像的任何其他数据,您可以过滤您的搜索图像以缩短搜索时间。我将关键点和描述符存储在XML文件中,然后将它们加载到向量中-我刚刚上载了一些项目的示例,您可能会在其中找到一些有用的内容: