diff --git a/src/ImageCompare/ImageCompareModel.cpp b/src/ImageCompare/ImageCompareModel.cpp index 76b37d5..4286771 100644 --- a/src/ImageCompare/ImageCompareModel.cpp +++ b/src/ImageCompare/ImageCompareModel.cpp @@ -295,101 +295,106 @@ bool ImageCompareModel::save2file(string filePath) bool ImageCompareModel::readFromFile(string filePath) { - FileStorage fs(filePath, FileStorage::READ); - if (!fs.isOpened()) - { - return false; - } + try { + FileStorage fs(filePath, FileStorage::READ); + if (!fs.isOpened()) + { + return false; + } - fs[IMGCMP_STR_ALIGN_BASE_IMAGE] >> mAlignBaseImg; - fs[IMGCMP_STR_COMPARE_BASE_IMAGE] >> mCompareBaseImg; - fs[IMGCMP_STR_WEIGHT_MAT] >> mWeightMat; - fs[IMGCMP_STR_INSIDE_AVE_IMAGE] >> mInSideBaseImg; - fs[IMGCMP_STR_INSIDE_COMP_AVE_IMAGE] >> mInsideCompareBaseImg; - fs[IMGCMP_STR_INSIDE_WEIGHT] >> mInsideWeightMat; - fs[IMGCMP_STR_INSIDE_TEMPL] >> innerTempl; - mMatchValScale = (double)fs[IMGCMP_STR_MATCH_VAL_SCALE]; - - FileNode fn = fs[IMGCMP_STR_TARGET_MEAN_VAL]; - if (!fn.empty()) - { - mTargetMeanVal = (int)fn; - } + fs[IMGCMP_STR_ALIGN_BASE_IMAGE] >> mAlignBaseImg; + fs[IMGCMP_STR_COMPARE_BASE_IMAGE] >> mCompareBaseImg; + fs[IMGCMP_STR_WEIGHT_MAT] >> mWeightMat; + fs[IMGCMP_STR_INSIDE_AVE_IMAGE] >> mInSideBaseImg; + fs[IMGCMP_STR_INSIDE_COMP_AVE_IMAGE] >> mInsideCompareBaseImg; + fs[IMGCMP_STR_INSIDE_WEIGHT] >> mInsideWeightMat; + fs[IMGCMP_STR_INSIDE_TEMPL] >> innerTempl; + mMatchValScale = (double)fs[IMGCMP_STR_MATCH_VAL_SCALE]; + + FileNode fn = fs[IMGCMP_STR_TARGET_MEAN_VAL]; + if (!fn.empty()) + { + mTargetMeanVal = (int)fn; + } - fn = fs[IMGCMP_STR_TARGET_STDDEV_VAL]; - if (!fn.empty()) - { - mTargetStddevVal = (int)fn; - } + fn = fs[IMGCMP_STR_TARGET_STDDEV_VAL]; + if (!fn.empty()) + { + mTargetStddevVal = (int)fn; + } - fn = fs[IMGCMP_STR_REPEAT_NUM]; - if (!fn.empty()) - { - mRepeatNum = (int)fn; - } - else - { - //mRepeatNum = computeRepeatNum(); - } + fn = fs[IMGCMP_STR_REPEAT_NUM]; + if (!fn.empty()) + { + mRepeatNum = (int)fn; + } + else + { + //mRepeatNum = computeRepeatNum(); + } - fn = fs[IMGCMP_STR_NAME]; - if (!fn.empty()) - { - mName = (string)fn; - } + fn = fs[IMGCMP_STR_NAME]; + if (!fn.empty()) + { + mName = (string)fn; + } - fn = fs[IMGCMP_STR_TRUE_SAMPLE_DIS_MEAN]; - if (!fn.empty()) - { - mTrueSampleDisMean = (double)fn; - } - fn = fs[IMGCMP_STR_TRUE_SAMPLE_DIS_STDDEV]; - if (!fn.empty()) - { - mTrueSampleDisStddev = (double)fn; - } - fn = fs[IMGCMP_STR_TRUE_SAMPLE_DIS_MIN]; - if (!fn.empty()) - { - mTrueSampleDisMin = (double)fn; - } - fn = fs[IMGCMP_STR_TRUE_SAMPLE_DIS_MAX]; - if (!fn.empty()) - { - mTrueSampleDisMax = (double)fn; - } - fn = fs[IMGCMP_STR_FALSE_SAMPLE_MIN_DIS]; - if (!fn.empty()) - { - setFalseSampleMinDis((double)fn); - } - fn = fs[IMGCMP_STR_DIS_THRE]; - if (!fn.empty()) - { - mDisThre = (double)fn; - } - - fn = fs[IMGCMP_STR_AVER_DIAMETER]; - if (!fn.empty()) - { - meanDiameter = (int)fn; - } + fn = fs[IMGCMP_STR_TRUE_SAMPLE_DIS_MEAN]; + if (!fn.empty()) + { + mTrueSampleDisMean = (double)fn; + } + fn = fs[IMGCMP_STR_TRUE_SAMPLE_DIS_STDDEV]; + if (!fn.empty()) + { + mTrueSampleDisStddev = (double)fn; + } + fn = fs[IMGCMP_STR_TRUE_SAMPLE_DIS_MIN]; + if (!fn.empty()) + { + mTrueSampleDisMin = (double)fn; + } + fn = fs[IMGCMP_STR_TRUE_SAMPLE_DIS_MAX]; + if (!fn.empty()) + { + mTrueSampleDisMax = (double)fn; + } + fn = fs[IMGCMP_STR_FALSE_SAMPLE_MIN_DIS]; + if (!fn.empty()) + { + setFalseSampleMinDis((double)fn); + } + fn = fs[IMGCMP_STR_DIS_THRE]; + if (!fn.empty()) + { + mDisThre = (double)fn; + } - fn = fs[IMGCMP_STR_INSIDE_RADIUS]; - if (!fn.empty()) - { - rInner = (float)fn; - } - fn = fs[IMGCMP_STR_INSIDE_CIRCLE_NUM]; - if (!fn.empty()) - { - mInnerCircleNum = (double)fn; - } - setFilePath(filePath); + fn = fs[IMGCMP_STR_AVER_DIAMETER]; + if (!fn.empty()) + { + meanDiameter = (int)fn; + } - genMask(); + fn = fs[IMGCMP_STR_INSIDE_RADIUS]; + if (!fn.empty()) + { + rInner = (float)fn; + } + fn = fs[IMGCMP_STR_INSIDE_CIRCLE_NUM]; + if (!fn.empty()) + { + mInnerCircleNum = (double)fn; + } + setFilePath(filePath); - return true; + genMask(); + + return true; + } + catch (std::exception &e) { + return false; + } } void ImageCompareModel::preProcessImage(Mat& img, Mat &insideImg) const