Skip to content

Commit 6a476be

Browse files
committed
Merge pull request #1505 from berak:xphoto_learning_based_color_balance
2 parents 01dbe00 + 6f4012d commit 6a476be

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

modules/xphoto/src/learning_based_color_balance.cpp

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,28 +95,35 @@ class LearningBasedWBImpl : public LearningBasedWB
9595
palette_size = 300;
9696
palette_bandwidth = 0.1f;
9797
prediction_thresh = 0.025f;
98-
if (path_to_model.empty())
98+
/* try to load model from file */
99+
FileStorage fs;
100+
if (!path_to_model.empty() && fs.open(path_to_model, FileStorage::READ))
99101
{
100-
/* use the default model */
101-
num_trees = _num_trees;
102-
num_tree_nodes = _num_tree_nodes;
103-
feature_idx = _feature_idx;
104-
thresh_vals = _thresh_vals;
105-
leaf_vals = _leaf_vals;
106-
}
107-
else
108-
{
109-
/* load model from file */
110-
FileStorage fs(path_to_model, 0);
111-
num_trees = fs["num_trees"];
112-
num_tree_nodes = fs["num_tree_nodes"];
102+
if (fs["num_trees"].isReal()) { //workaround for #10506
103+
double nt = fs["num_trees"];
104+
num_trees = int(nt);
105+
double ntn = fs["num_tree_nodes"];
106+
num_tree_nodes = int(ntn);
107+
} else {
108+
num_trees = fs["num_trees"];
109+
num_tree_nodes = fs["num_tree_nodes"];
110+
}
113111
fs["feature_idx"] >> feature_idx_Mat;
114112
fs["thresh_vals"] >> thresh_vals_Mat;
115113
fs["leaf_vals"] >> leaf_vals_Mat;
116114
feature_idx = feature_idx_Mat.ptr<uchar>();
117115
thresh_vals = thresh_vals_Mat.ptr<float>();
118116
leaf_vals = leaf_vals_Mat.ptr<float>();
119117
}
118+
else
119+
{
120+
/* use the default model */
121+
num_trees = _num_trees;
122+
num_tree_nodes = _num_tree_nodes;
123+
feature_idx = _feature_idx;
124+
thresh_vals = _thresh_vals;
125+
leaf_vals = _leaf_vals;
126+
}
120127
}
121128

122129
int getRangeMaxVal() const { return range_max_val; }

0 commit comments

Comments
 (0)