diff --git a/config/MultiCue.xml b/config/MultiCue.xml
new file mode 100644
index 0000000000000000000000000000000000000000..25b693ae14d145df34f51f8f8b182878b6a90871
--- /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 317384b38eecf43faa939a946b7e4ee12e86a8d4..fd04ed1960ce92f08c6461a4a92443f610162ac2 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);
 }