tempRecognizer->read(storage.root());
tempConfig.mModelType =
MEDIA_VISION_FACE_MODEL_TYPE_EIGENFACES;
- tempConfig.mNumComponents =
- (dynamic_cast<cv::face::EigenFaceRecognizer*>(tempRecognizer.get()))->getNumComponents();
- labels = (dynamic_cast<cv::face::EigenFaceRecognizer*>(tempRecognizer.get()))->getLabels();
+ cv::face::EigenFaceRecognizer* recognizer = dynamic_cast<cv::face::EigenFaceRecognizer*>(tempRecognizer.get());
+ if (recognizer != NULL) {
+ tempConfig.mNumComponents = recognizer->getNumComponents();
+ labels = recognizer->getLabels();
+ } else {
+ return MEDIA_VISION_ERROR_NOT_SUPPORTED_FORMAT;
+ }
} else if (algName == "Fisherfaces") {
tempRecognizer = cv::face::FisherFaceRecognizer::create();
storage["resizeW"] >> tempConfig.mImgWidth;
tempRecognizer->read(storage.root());
tempConfig.mModelType =
MEDIA_VISION_FACE_MODEL_TYPE_FISHERFACES;
- tempConfig.mNumComponents =
- (dynamic_cast<cv::face::FisherFaceRecognizer*>(tempRecognizer.get()))->getNumComponents();
- labels = (dynamic_cast<cv::face::FisherFaceRecognizer*>(tempRecognizer.get()))->getLabels();
+ cv::face::FisherFaceRecognizer* recognizer = dynamic_cast<cv::face::FisherFaceRecognizer*>(tempRecognizer.get());
+ if (recognizer != NULL) {
+ tempConfig.mNumComponents = recognizer->getNumComponents();
+ labels = recognizer->getLabels();
+ } else {
+ return MEDIA_VISION_ERROR_NOT_SUPPORTED_FORMAT;
+ }
} else if (algName == "LBPH") {
tempRecognizer = cv::face::LBPHFaceRecognizer::create();
tempRecognizer->read(storage.root());
- tempConfig.mModelType =
- MEDIA_VISION_FACE_MODEL_TYPE_LBPH;
- tempConfig.mGridX = (dynamic_cast<cv::face::LBPHFaceRecognizer*>(tempRecognizer.get()))->getGridX();
- tempConfig.mGridY = (dynamic_cast<cv::face::LBPHFaceRecognizer*>(tempRecognizer.get()))->getGridY();
- tempConfig.mNeighbors = (dynamic_cast<cv::face::LBPHFaceRecognizer*>(tempRecognizer.get()))->getNeighbors();
- tempConfig.mRadius = (dynamic_cast<cv::face::LBPHFaceRecognizer*>(tempRecognizer.get()))->getRadius();
- labels = (dynamic_cast<cv::face::LBPHFaceRecognizer*>(tempRecognizer.get()))->getLabels();
+ cv::face::LBPHFaceRecognizer* recognizer = dynamic_cast<cv::face::LBPHFaceRecognizer*>(tempRecognizer.get());
+ if (recognizer != NULL) {
+ tempConfig.mModelType =
+ MEDIA_VISION_FACE_MODEL_TYPE_LBPH;
+ tempConfig.mGridX = recognizer->getGridX();
+ tempConfig.mGridY = recognizer->getGridY();
+ tempConfig.mNeighbors = recognizer->getNeighbors();
+ tempConfig.mRadius = recognizer->getRadius();
+ labels = recognizer->getLabels();
+ } else {
+ return MEDIA_VISION_ERROR_NOT_SUPPORTED_FORMAT;
+ }
} else {
tempConfig = FaceRecognitionModelConfig();
LOGE("Failed to load face recognition model from file. File is in "
CV_MAKETYPE(depth, channelsNumber), buffer).clone();
} else {/* With conversion */
/* Class for representation the given image as cv::Mat before conversion */
- cv::Mat origin(cv::Size(width, height), CV_MAKETYPE(depth, channelsNumber), buffer);
+ cv::Mat origin;
+
+ try {
+ origin = cv::Mat(cv::Size(width, height),
+ CV_MAKETYPE(depth, channelsNumber), buffer);
+ } catch (cv::Exception &e) {
+ return MEDIA_VISION_ERROR_NOT_SUPPORTED_FORMAT;
+ }
try {
cv::cvtColor(origin, cvSource, conversionType);