OpenCV で画像のデータ マトリックスを作成する必要があります。基本的に、マトリックスの各行には、同じ人物の複数の画像が含まれます。@ bytefish によって書かれたこのasRowMatrix チュートリアルを見つけましたが、現在、複数の画像をマトリックスの行にコピーする方法を理解していません。「;」で区切られた画像パスのテキスト ファイルがあります。パスが新しいサブジェクトを参照している場合、たとえば:
Subject1/Image1.png
Subject1/Image2.png
;
Subject2/Image1.png
私の最初のアイデアは、2D ベクトルを持つことでした。
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 データ構造を使用する方法についてのアドバイスをいただければ幸いです。