我正在尝试编写对象识别程序以从一组训练图像中检测查询图像。为此,我想将所有列车图像的所有关键点的所有关键描述符存储在一个巨型矩阵中,并将该矩阵作为参数传递给FLANN匹配算法。但是,这里的问题是如何将给定目录中的一系列图像传递给FeatureDetect和FeatureDescriptor类对象。根据openCV doc 3.0,FeatureDetector类的检测成员函数接受一系列图像。但怎么办呢?我很困惑请帮忙。
答案 0 :(得分:0)
如果我理解正确,您的问题是关于加载图像,您需要传递给FeatureDetector。
我建议使用以下代码列出文件夹中的文件:How can I get the list of files in a directory using C or C++?。
然后在每个文件上(可能需要过滤特定扩展名),您可以:
vector< string > fileNames;
// uses readdir to fill fileNames
[...]
// load the images
vector< Mat > images;
for ( size_t i=0; i<fileNames.size(); i++ ) {
Mat img = imread( fileNames[i] );
if ( img ) // only valid images
images.push_back( img );
}
// pass the images to detector
在周期结束时,您将把图像作为FeatureDetector::detect
的第一个参数传递。
你不担心所需的内存吗?