加入模板数据加载保护,如过文件加载失败,即对该型号进行重新训练

jizhi
bob.pan 5 years ago
parent 4b8ab2427f
commit a30dd9ee53

@ -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

Loading…
Cancel
Save