저는 얼굴 인식 프로젝트를 진행하고 있으며 PCA 부분 공간에 투영 할 때 문제가 있습니다.OpenCV 2.3의 PCA 프로젝트 및 Backproject
크기가 조정 된 이미지가 포함 된 매트 벡터를 크기 조정 이미지에 전달하면 이미지를 투영 한 다음 제대로 작동하는지 재구성하지만 '캠'창에있는 모든 이미지는 회색입니다 (모두 같은 색).
내가 뭘 잘못하고 있는지 모르겠다. 나는이 게시물의 중복 생각
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"로 tryied하지만 작동하지 않으므로 알고리즘 (간단한 예제)을 사용하도록 코드를 다시 작성하고 pca.mean을 표시하면 고유 벡터가 모두 검은 색 이미지로 표시됩니다. – user1219145
convertTo가 문제를 해결하면 (제 대답을 편집했습니다) 시도하십시오. 그건 그렇고, 만약 당신이 후면 내 페이지에 Eigenfaces 및 Fisherfaces 구현을 제공하고 있습니다. – bytefish
도움 주셔서 감사합니다. 마지막으로 나는 당신의 블로그에있는 당신의 코드 "Simple Example"을 사용하고있다. 나는 너의 블로그의 나머지를 검사 할 것이다. 다시 한번 감사드립니다. – user1219145