私は顔認識プロジェクトに取り組んでおり、PCA部分空間に投影するときに問題があります。OpenCV 2.3(C++)のPCAプロジェクトとバックプロジェクト
リサイズされたイメージを使用して機能にマットベクトルを渡すと、私はそれらを投影し、それが正常に機能していることを確認するために再構成しますが、 "カム"ウィンドウにあるすべてがグレーのイメージです)。
私は何をやっているのか分かりません。
これは、関数である:
void doPCA (const vector<Mat>& images)
{
int nEigens = images.size()-1;
Mat data (images.size(), images[0].rows*images[0].cols, images[0].type());
for (int i = 0; i < images.size(); i++)
{
Mat aux = data.row(i);
images[i].reshape(1,1).copyTo(aux);
}
PCA pca(data,Mat(),CV_PCA_DATA_AS_ROW,nEigens);
//Project images
Mat dataprojected(data.rows, nEigens, CV_32FC1) ;
for(int i=0; i<images.size(); i++)
{
pca.project(data.row(i), dataprojected.row(i));
}
//Backproject to reconstruct images
Mat datareconstructed (data.rows, data.cols, data.type());
for(int i=0; i<images.size(); i++)
{
pca.backProject (dataprojected.row(i), datareconstructed.row(i));
}
for(int i=0; i<images.size(); i++)
{
imshow ("Cam", datareconstructed.row(i).reshape(1,images[0].rows));
waitKey();
}
}
こんにちはbytefish.First、感謝。私は "normalize"で試しましたが、うまくいきませんので、私のコードをあなたのアルゴリズム(単純な例)を使用するように書き直して、pca.meanと固有ベクトルを表示すると黒い画像が表示されます。 – user1219145
convertToがあなたの問題を解決したら(私は私の答えを編集しました)、試してください。ちなみに、私がEigenfacesとFisherfacesの実装を私のページに提供しています。 – bytefish
ご協力ありがとうございます。最後に私はあなたのブログにあるあなたのコード "Simple Example"を使用しており、うまくいきました。私はあなたのブログの残りの部分をチェックします。再度、感謝します。 – user1219145