stepofchange 0 Жалоба Опубликовано December 26, 2015 Здравствуйте! Пишу программу распознавания лица на android, изучаю пример из книги "Mastering OpenCV with Practical Computer Vision Projects" главы 8, попутная переписывая пример на javacv, но столкнулся с проблемой: в файле recognition.cpp присутствует следующий код: Mat reconstructFace(const Ptr<FaceRecognizer> model, const Mat preprocessedFace) { // Since we can only reconstruct the face for some types of FaceRecognizer models (ie: Eigenfaces or Fisherfaces), // we should surround the OpenCV calls by a try/catch block so we don't crash for other models. try { // Get some required data from the FaceRecognizer model. Mat eigenvectors = model->get<Mat>("eigenvectors"); Mat averageFaceRow = model->get<Mat>("mean"); int faceHeight = preprocessedFace.rows; // Project the input image onto the PCA subspace. Mat projection = subspaceProject(eigenvectors, averageFaceRow, preprocessedFace.reshape(1,1)); //printMatInfo(projection, "projection"); // Generate the reconstructed face back from the PCA subspace. Mat reconstructionRow = subspaceReconstruct(eigenvectors, averageFaceRow, projection); //printMatInfo(reconstructionRow, "reconstructionRow"); // Convert the float row matrix to a regular 8-bit image. Note that we // shouldn't use "getImageFrom1DFloatMat()" because we don't want to normalize // the data since it is already at the perfect scale. // Make it a rectangular shaped image instead of a single row. Mat reconstructionMat = reconstructionRow.reshape(1, faceHeight); // Convert the floating-point pixels to regular 8-bit uchar pixels. Mat reconstructedFace = Mat(reconstructionMat.size(), CV_8U); reconstructionMat.convertTo(reconstructedFace, CV_8U, 1, 0); //printMatInfo(reconstructedFace, "reconstructedFace"); return reconstructedFace; } catch (cv::Exception e) { //cout << "WARNING: Missing FaceRecognizer properties." << endl; return Mat(); } } Я не могу понять, что делают в данном коде строки: Mat eigenvectors = model->get<Mat>("eigenvectors"); Mat averageFaceRow = model->get<Mat>("mean") Что они получают? И есть ли альтернатива этому в javacv? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано December 27, 2015 Это считывание матриц собственных векторов и усредненного лица, полученных при обучении методом главных компонент. javacv не знаю, но с cv::FileStorage, на базе которых построен ввод вывод в OpenCV на андроиде не работает, поэтому возникают проблемы и с загрузкой каскадов в нативе и таких вот загрузках матриц. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stepofchange 0 Жалоба Опубликовано December 27, 2015 7 часов назад, Smorodov said: Это считывание матриц собственных векторов и усредненного лица, полученных при обучении методом главных компонент. javacv не знаю, но с cv::FileStorage, на базе которых построен ввод вывод в OpenCV на андроиде не работает, поэтому возникают проблемы и с загрузкой каскадов в нативе и таких вот загрузках матриц. Спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stepofchange 0 Жалоба Опубликовано December 28, 2015 В 27.12.2015 at 12:14, Smorodov said: Это считывание матриц собственных векторов и усредненного лица, полученных при обучении методом главных компонент. javacv не знаю, но с cv::FileStorage, на базе которых построен ввод вывод в OpenCV на андроиде не работает, поэтому возникают проблемы и с загрузкой каскадов в нативе и таких вот загрузках матриц. Кстати проверил CvFileStorage на андройде работает, по крайней мере на javacv, но как загрузить собственные вектора не пойму, как я понимаю их можно взять из .yaml файла, который я сохраняю после обучения? Или как? Откуда должны грузиться собственные векторы? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано December 28, 2015 Ну да, на компе с файла, на девайсе вероятно из ресурсов или с файла. Посмотрите, ваша model должна при инициализации что-то такое открывать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stepofchange 0 Жалоба Опубликовано December 28, 2015 54 минуты назад, Smorodov said: Ну да, на компе с файла, на девайсе вероятно из ресурсов или с файла. Посмотрите, ваша model должна при инициализации что-то такое открывать. Спасибо! Разобрался) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах