From 85cbdde06bb5e89937881f301ae70bdd243b8932 Mon Sep 17 00:00:00 2001
From: Sergei <rubasketcom@gmail.com>
Date: Sun, 17 Feb 2019 16:01:42 +0300
Subject: [PATCH] Added loading/saving xml configuration for MultiCue (#148)

---
 config/MultiCue.xml      | 17 +++++++++++++++++
 package_bgs/MultiCue.cpp | 30 ++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 config/MultiCue.xml

diff --git a/config/MultiCue.xml b/config/MultiCue.xml
new file mode 100644
index 0000000..25b693a
--- /dev/null
+++ b/config/MultiCue.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<opencv_storage>
+<showOutput>1</showOutput>
+<g_fLearningRate>5.0000000745058060e-02</g_fLearningRate>
+<g_iAbsortionPeriod>200</g_iAbsortionPeriod>
+<g_iC_ModelThreshold>10</g_iC_ModelThreshold>
+<g_iT_ModelThreshold>1</g_iT_ModelThreshold>
+<g_iBackClearPeriod>300</g_iBackClearPeriod>
+<g_iCacheClearPeriod>30</g_iCacheClearPeriod>
+<g_nNeighborNum>6</g_nNeighborNum>
+<g_nRadius>2</g_nRadius>
+<g_nTextureTrainVolRange>15</g_nTextureTrainVolRange>
+<g_bAbsorptionEnable>1</g_bAbsorptionEnable>
+<g_iTrainingPeriod>20</g_iTrainingPeriod>
+<g_iRWidth>160</g_iRWidth>
+<g_iRHeight>120</g_iRHeight>
+</opencv_storage>
diff --git a/package_bgs/MultiCue.cpp b/package_bgs/MultiCue.cpp
index 317384b..fd04ed1 100644
--- a/package_bgs/MultiCue.cpp
+++ b/package_bgs/MultiCue.cpp
@@ -122,6 +122,21 @@ void MultiCue::saveConfig()
   CvFileStorage* fs = cvOpenFileStorage(config_xml.c_str(), nullptr, CV_STORAGE_WRITE);
 
   cvWriteInt(fs, "showOutput", showOutput);
+  cvWriteReal(fs, "g_fLearningRate", g_fLearningRate);
+  cvWriteInt(fs, "g_iAbsortionPeriod", g_iAbsortionPeriod);
+  cvWriteInt(fs, "g_iC_ModelThreshold", g_iC_ModelThreshold);
+  cvWriteInt(fs, "g_iT_ModelThreshold", g_iT_ModelThreshold);
+
+  cvWriteInt(fs, "g_iBackClearPeriod", g_iBackClearPeriod);
+  cvWriteInt(fs, "g_iCacheClearPeriod", g_iCacheClearPeriod);
+  cvWriteInt(fs, "g_nNeighborNum", g_nNeighborNum);
+  cvWriteInt(fs, "g_nRadius", g_nRadius);
+
+  cvWriteInt(fs, "g_nTextureTrainVolRange", g_nTextureTrainVolRange);
+  cvWriteInt(fs, "g_bAbsorptionEnable", g_bAbsorptionEnable);
+  cvWriteInt(fs, "g_iTrainingPeriod", g_iTrainingPeriod);
+  cvWriteInt(fs, "g_iRWidth", g_iRWidth);
+  cvWriteInt(fs, "g_iRHeight", g_iRHeight);
 
   cvReleaseFileStorage(&fs);
 }
@@ -131,6 +146,21 @@ void MultiCue::loadConfig()
   CvFileStorage* fs = cvOpenFileStorage(config_xml.c_str(), nullptr, CV_STORAGE_READ);
 
   showOutput = cvReadIntByName(fs, nullptr, "showOutput", true);
+  g_fLearningRate = cvReadRealByName(fs, nullptr, "g_fLearningRate", g_fLearningRate);
+  g_iAbsortionPeriod = cvReadIntByName(fs, nullptr, "g_iAbsortionPeriod", g_iAbsortionPeriod);
+  g_iC_ModelThreshold = cvReadIntByName(fs, nullptr, "g_iC_ModelThreshold", g_iC_ModelThreshold);
+  g_iT_ModelThreshold = cvReadIntByName(fs, nullptr, "g_iT_ModelThreshold", g_iT_ModelThreshold);
+
+  g_iBackClearPeriod = cvReadIntByName(fs, nullptr, "g_iBackClearPeriod", g_iBackClearPeriod);
+  g_iCacheClearPeriod = cvReadIntByName(fs, nullptr, "g_iCacheClearPeriod", g_iCacheClearPeriod);
+  g_nNeighborNum = cvReadIntByName(fs, nullptr, "g_nNeighborNum", g_nNeighborNum);
+  g_nRadius = cvReadIntByName(fs, nullptr, "g_nRadius", g_nRadius);
+
+  g_nTextureTrainVolRange = cvReadIntByName(fs, nullptr, "g_nTextureTrainVolRange", g_nTextureTrainVolRange);
+  g_bAbsorptionEnable =  cvReadIntByName(fs, nullptr, "g_bAbsorptionEnable", g_bAbsorptionEnable);
+  g_iTrainingPeriod = cvReadIntByName(fs, nullptr, "g_iTrainingPeriod", g_iTrainingPeriod);
+  g_iRWidth = cvReadIntByName(fs, nullptr, "g_iRWidth", g_iRWidth);
+  g_iRHeight = cvReadIntByName(fs, nullptr, "g_iRHeight", g_iRHeight);
 
   cvReleaseFileStorage(&fs);
 }
-- 
GitLab