[UTC][capi-media-vision][NON-ACR][SVACE] 10/183610/4 accepted/tizen/unified/20180716.185635 submit/tizen/20180711.014745
authorsangho park <sangho.g.park@samsung.com>
Mon, 9 Jul 2018 04:14:19 +0000 (13:14 +0900)
committersangho park <sangho.g.park@samsung.com>
Mon, 9 Jul 2018 05:53:36 +0000 (14:53 +0900)
WGID-279240 : add try-catch to convertSourceMV2GrayCV() internal API.
WGID-347564, 347565, 347566 : add NULL checking.

Change-Id: I0bcc82e109243a8028c0fd9bd47c69126320c197
Signed-off-by: sangho park <sangho.g.park@samsung.com>
mv_face/face/src/FaceRecognitionModel.cpp
mv_image/image/src/mv_image_open.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 "
index 04d4a9a..d0ca698 100644 (file)
@@ -377,7 +377,14 @@ int convertSourceMV2GrayCV(mv_source_h mvSource, cv::Mat& cvSource)
                                        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);