【发布时间】:2013-03-20 13:11:57
【问题描述】:
我尝试使用 OpenCV 制作描述符字典。 当我使用 BOWKmeansTrainer 的方法 .cluster() 时,我的应用程序抛出未处理的异常
OpenCV 错误:断言失败 (data.dims 0) in un 已知函数,文件......\src\opencv\modules\core\src\matrix.cpp,第 2485 行 未知异常
我不明白为什么会这样。我尝试更改参数,但没有帮助。
您能给我一些想法,我可以如何解决这个问题吗?
int main(int argc, char* argv[]) {
const int countClusters = 2;
vector<string> fileList;
GetFilesInFolder(folder_one, fileList);
vector<bool> trainMask(fileList.size());
InitRandomBoolVector(trainMask, 0.1);
Ptr<FeatureDetector> keypointsDetector = FeatureDetector::create("HARRIS");
Ptr<DescriptorExtractor> descriptorsExtractor = DescriptorExtractor::create("BRIEF");
Mat descriptors;
Mat voc;
TermCriteria tc(TermCriteria::COUNT + TermCriteria::EPS, 10, 0.001);
BOWKMeansTrainer bowTrainer(vocSize,tc);
for(int i = 0;i < filesList.size();i++)
{
if(is_voc.at(i))
{
vector<KeyPoint> keypoints;
Mat image = imread(filesList.at(i));
keypointsDetector->detect(image,keypoints);
descriptorsExtractor->compute(image,keypoints,descriptors);
bowTrainer.add(descriptors);
}
}
try
{
voc = bowTrainer.cluster();
}
catch(std::exception ex)
{
printf(ex.what());
}
return 0;
}
【问题讨论】:
-
异常信息告诉你问题出在哪里。慢慢仔细阅读。
-
我帮助他:
dimensions <= 2ANDtype == CV_32FANDK > 0。所以要么选择另一种类型,要么获得更多维度。 -
我也有同样的异常,很难理解。特别是,我不明白尺寸
标签: opencv machine-learning computer-vision cluster-computing