From b68520418c88640c998a8b3732abe185161d3b7e Mon Sep 17 00:00:00 2001 From: sangho park Date: Mon, 9 Jul 2018 13:14:19 +0900 Subject: [PATCH] [UTC][capi-media-vision][NON-ACR][SVACE] WGID-279240 : add try-catch to convertSourceMV2GrayCV() internal API. WGID-347564, 347565, 347566 : add NULL checking. Change-Id: I0bcc82e109243a8028c0fd9bd47c69126320c197 Signed-off-by: sangho park --- mv_face/face/src/FaceRecognitionModel.cpp | 39 ++++++++++++++++++++----------- mv_image/image/src/mv_image_open.cpp | 9 ++++++- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/mv_face/face/src/FaceRecognitionModel.cpp b/mv_face/face/src/FaceRecognitionModel.cpp index b9f4971..0b98930 100644 --- a/mv_face/face/src/FaceRecognitionModel.cpp +++ b/mv_face/face/src/FaceRecognitionModel.cpp @@ -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(tempRecognizer.get()))->getNumComponents(); - labels = (dynamic_cast(tempRecognizer.get()))->getLabels(); + cv::face::EigenFaceRecognizer* recognizer = dynamic_cast(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(tempRecognizer.get()))->getNumComponents(); - labels = (dynamic_cast(tempRecognizer.get()))->getLabels(); + cv::face::FisherFaceRecognizer* recognizer = dynamic_cast(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(tempRecognizer.get()))->getGridX(); - tempConfig.mGridY = (dynamic_cast(tempRecognizer.get()))->getGridY(); - tempConfig.mNeighbors = (dynamic_cast(tempRecognizer.get()))->getNeighbors(); - tempConfig.mRadius = (dynamic_cast(tempRecognizer.get()))->getRadius(); - labels = (dynamic_cast(tempRecognizer.get()))->getLabels(); + cv::face::LBPHFaceRecognizer* recognizer = dynamic_cast(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 " diff --git a/mv_image/image/src/mv_image_open.cpp b/mv_image/image/src/mv_image_open.cpp index 04d4a9a..d0ca698 100644 --- a/mv_image/image/src/mv_image_open.cpp +++ b/mv_image/image/src/mv_image_open.cpp @@ -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); -- 2.7.4