[UTC][capi-media-vision][NON-ACR][SVACE]
[platform/core/api/mediavision.git] / mv_face / face / src / FaceRecognitionModel.cpp
index b9f4971..0b98930 100644 (file)
@@ -302,9 +302,13 @@ int FaceRecognitionModel::load(const std::string& fileName)
                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;
@@ -312,19 +316,28 @@ int FaceRecognitionModel::load(const std::string& fileName)
                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 "