我需要在 OpenCV 中创建图像数据矩阵。基本上,矩阵的每一行都将包含同一个人的多个图像。我发现了 @ bytefish 编写的asRowMatrix 教程,但是我目前不明白如何将多个图像复制到矩阵的一行中。我有一个图像路径的文本文件,用“;”分隔 当路径引用新主题时,例如:
Subject1/Image1.png
Subject1/Image2.png
;
Subject2/Image1.png
我最初的想法是有一个二维向量:
Vector<Vector<Mat>> intra;
while(file.good()) {
getline(file, path);
if((path.compare(";"))!=0){
try{
//Add images to person-index
intra[curRow].push_back(imread(path,0));
} catch (Exception const & e){
cerr<<"OpenCV exception: "<<e.what()<<std::endl;
}
} else{
//";" found --> increment person-index
curRow++;
}
}
imshow("Intra[0,0]",intra[0][0]);
但是,我收到一个错误,我认为这是由于向量的大小不合适(curRow+1)
OpenCV Error: Assertion failed (i < size()) in unknown function, file c:\opencv\
include\opencv2\core\operations.hpp, line 2357
OpenCV exception: c:\opencv\include\opencv2\core\operations.hpp:2357: error: (-2
15) i < size()
在 else 中调整向量的大小并没有解决问题!任何有关解决此问题或使用不同 OpenCV 数据结构的指针将不胜感激!