Я не силён в математике и c++, но сильно заморочился распознаванием лиц.
вроде получилось даже реализовать PCA
очень хочется попробовать как работает LDA, но я никак не могу понять как это реализовать при помощи opencv
прошу помощи в данном вопросе
Так я обучаю
pca(NOWtrainData, // pass the data
Mat(), // we do not have a pre-computed mean vector, so let the PCA engine to compute it
CV_PCA_DATA_AS_ROW, // indicate that the vectors are stored as matrix rows (use CV_PCA_DATA_AS_COL if the vectors are the matrix columns)
MAX_PC // specify, how many principal components to retain
);
Mat PCAtrainData=CvPCAtrainData;
for( int i = 0; i < (train_samples*classes); i++ )
{
Mat vec = NOWtrainData.row(i), coeffs = PCAtrainData.row(i);
pca.project(vec,coeffs); // PC coordinates of projected vectors
}
Matknn=new CvKNearest( CvPCAtrainData, trainClasses, 0, false, K );
[/codebox]
вот так я ищу классы
[codebox] CvMat* nearest=cvCreateMat(1,K,CV_32FC1);
CvMat* distance=cvCreateMat(1,K,CV_32FC1);
Mat coeffs;
Mat img32f=preprocessing32(img);
pca.project(img32f, coeffs); // вычитаем из вектора общие элементы
CvMat PCA_img = coeffs;
float result=Matknn->find_nearest(&PCA_img,1,0,0,0,0);
float result_more=Matknn->find_nearest(&PCA_img,K,0,0,nearest,distance);
компилирую так:
#!/bin/sh.
if [[ $# > 0 ]] ; then
base=`basename $1 .c`
echo "compiling $base"
gcc -ggdb `pkg-config opencv --cflags --libs` $base.c -o $base.
else
for i in *.cpp; do.
echo "compiling $i".
g++ -ggdb `pkg-config --cflags opencv` -o `basename $i .cpp` $i `pkg-config --libs opencv`;.
done.
fi
[/codebox]
полный код во вложении, может кто подхватит и сделает полезную утилиту для сортировки фотографий например
LDA для распознавания лиц
в OpenCV
Опубликовано · Report reply
Добрый день.
Я не силён в математике и c++, но сильно заморочился распознаванием лиц.
вроде получилось даже реализовать PCA
очень хочется попробовать как работает LDA, но я никак не могу понять как это реализовать при помощи opencv
прошу помощи в данном вопросе
Так я обучаю
вот так я ищу классы
CvMat* distance=cvCreateMat(1,K,CV_32FC1);
Mat coeffs;
Mat img32f=preprocessing32(img);
pca.project(img32f, coeffs); // вычитаем из вектора общие элементы
CvMat PCA_img = coeffs;
float result=Matknn->find_nearest(&PCA_img,1,0,0,0,0);
float result_more=Matknn->find_nearest(&PCA_img,K,0,0,nearest,distance);
компилирую так:
полный код во вложении, может кто подхватит и сделает полезную утилиту для сортировки фотографий например
facedetect7.cpp.gz