summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mv_face/face/src/FaceRecognitionModel.cpp31
-rw-r--r--mv_face/face/src/mv_face_open.cpp47
-rw-r--r--packaging/capi-media-vision.spec2
3 files changed, 30 insertions, 50 deletions
diff --git a/mv_face/face/src/FaceRecognitionModel.cpp b/mv_face/face/src/FaceRecognitionModel.cpp
index a0754a77..2b333129 100644
--- a/mv_face/face/src/FaceRecognitionModel.cpp
+++ b/mv_face/face/src/FaceRecognitionModel.cpp
@@ -23,6 +23,7 @@
#include <stdio.h>
#include <unistd.h>
+#include <fstream>
namespace MediaVision {
namespace Face {
@@ -31,15 +32,41 @@ namespace {
unsigned int DefaultUnisizeWidth = 200;
unsigned int DefaultUnisizeHeight = 200;
+bool isEmptyAlgorithmParam(const std::string& path)
+{
+ char valid[256] = "";
+ std::ifstream ifs;
+
+ ifs.open(path.c_str());
+
+ if (!ifs.is_open()) {
+ LOGE("[%s] Can't open file.", path.c_str());
+ return true;
+ }
+
+ ifs.getline(valid, 256);
+ ifs.close();
+
+ LOGD("Validation string: %s", valid);
+ if (strlen(valid) <= 0) {
+ LOGE("algorithm params is empty.");
+ return true;
+ }
+
+ return false;
+}
+
int CopyOpenCVAlgorithmParameters(const cv::Ptr<cv::FaceRecognizer>& srcAlg,
cv::Ptr<cv::FaceRecognizer>& dstAlg)
{
- char tempPath[1024];
+ char tempPath[1024] = "";
snprintf(tempPath, 1024, "/tmp/alg_copy_%p_%p", srcAlg.obj, dstAlg.obj);
srcAlg->save(tempPath);
- dstAlg->load(tempPath);
+
+ if (!isEmptyAlgorithmParam(tempPath))
+ dstAlg->load(tempPath);
if (0 != remove(tempPath))
LOGW("Error removing serialized FaceRecognizer in %s", tempPath);
diff --git a/mv_face/face/src/mv_face_open.cpp b/mv_face/face/src/mv_face_open.cpp
index 292c10a4..d3407442 100644
--- a/mv_face/face/src/mv_face_open.cpp
+++ b/mv_face/face/src/mv_face_open.cpp
@@ -210,11 +210,6 @@ int mv_face_recognize_open(
FaceRecognitionModel *pRecModel = static_cast<FaceRecognitionModel*>(recognition_model);
- if (!pRecModel) {
- LOGE("Face recognition failed. Incorrect Media Vision Face recognition model handle is used");
- return MEDIA_VISION_ERROR_INVALID_PARAMETER;
- }
-
cv::Mat grayImage;
int ret = convertSourceMV2GrayCV(source, grayImage);
@@ -309,12 +304,6 @@ int mv_face_track_open(
FaceTrackingModel *pTrackModel =
static_cast<FaceTrackingModel*>(tracking_model);
- if (!pTrackModel) {
- LOGE("Face tracking failed. "
- "Incorrect Media Vision Face tracking model handle is used");
- return MEDIA_VISION_ERROR_INVALID_PARAMETER;
- }
-
cv::Mat grayImage;
int ret = convertSourceMV2GrayCV(source, grayImage);
@@ -591,12 +580,6 @@ int mv_face_recognition_model_add_open(
FaceRecognitionModel *pRecModel =
static_cast<FaceRecognitionModel*>(recognition_model);
- if (!pRecModel) {
- LOGE("Add face image example to the model failed. "
- "Incorrect Media Vision Face recognition model handle is used");
- return MEDIA_VISION_ERROR_INVALID_PARAMETER;
- }
-
cv::Mat image;
int ret = convertSourceMV2GrayCV(source, image);
if (MEDIA_VISION_ERROR_NONE != ret) {
@@ -637,12 +620,6 @@ int mv_face_recognition_model_reset_open(
FaceRecognitionModel *pRecModel =
static_cast<FaceRecognitionModel*>(recognition_model);
- if (!pRecModel) {
- LOGE("Loading of the face recognition model from file failed. "
- "Incorrect Media Vision Face recognition model handle is used");
- return MEDIA_VISION_ERROR_INVALID_PARAMETER;
- }
-
int ret = (NULL != face_label ?
pRecModel->resetFaceExamples(*face_label) :
pRecModel->resetFaceExamples());
@@ -668,12 +645,6 @@ int mv_face_recognition_model_learn_open(
FaceRecognitionModel *pRecModel =
static_cast<FaceRecognitionModel*>(recognition_model);
- if (!pRecModel) {
- LOGE("Learning of the face recognition model failed. "
- "Incorrect Media Vision Face recognition model handle is used");
- return MEDIA_VISION_ERROR_INVALID_PARAMETER;
- }
-
RecognitionParams recognitionParams;
extractRecognitionParams(engine_cfg, recognitionParams);
FaceRecognitionModelConfig learnConfig;
@@ -709,12 +680,6 @@ int mv_face_recognition_model_query_labels_open(
FaceRecognitionModel *pRecModel =
static_cast<FaceRecognitionModel*>(recognition_model);
- if (!pRecModel) {
- LOGE("Learning of the face recognition model failed. "
- "Incorrect Media Vision Face recognition model handle is used");
- return MEDIA_VISION_ERROR_INVALID_PARAMETER;
- }
-
const std::set<int>& learnedLabels = pRecModel->getFaceLabels();
*number_of_labels = learnedLabels.size();
@@ -789,12 +754,6 @@ int mv_face_tracking_model_prepare_open(
FaceTrackingModel *pTrackModel =
static_cast<FaceTrackingModel*>(tracking_model);
- if (!pTrackModel) {
- LOGE("Preparation of the face tracking model failed. "
- "Incorrect Media Vision Face tracking model handle is used");
- return MEDIA_VISION_ERROR_INVALID_PARAMETER;
- }
-
cv::Mat image;
int ret = convertSourceMV2GrayCV(source, image);
if (MEDIA_VISION_ERROR_NONE != ret) {
@@ -881,12 +840,6 @@ int mv_face_tracking_model_save_open(
FaceTrackingModel *pTrackModel = static_cast<FaceTrackingModel*>(tracking_model);
- if (!pTrackModel) {
- LOGE("Saving of the face tracking model to file failed. "
- "Incorrect Media Vision Face tracking model handle is used");
- return MEDIA_VISION_ERROR_INVALID_PARAMETER;
- }
-
const int ret = pTrackModel->save(std::string(file_name));
if (MEDIA_VISION_ERROR_NONE != ret) {
diff --git a/packaging/capi-media-vision.spec b/packaging/capi-media-vision.spec
index 3f8bf781..2f44fe36 100644
--- a/packaging/capi-media-vision.spec
+++ b/packaging/capi-media-vision.spec
@@ -1,6 +1,6 @@
Name: capi-media-vision
Summary: Media Vision library for Tizen Native API
-Version: 0.3.21
+Version: 0.3.23
Release: 1
Group: Multimedia/Framework
License: Apache-2.0 and BSD-2.0