0
對不起,令人困惑的標題,但它基本上說明了一切。下面是我使用的結構(在OpenCV中找到):通過價值傳遞結構,以其他結構作爲其成員之一,更改此成員的成員的值
struct CV_EXPORTS CvRTParams : public CvDTreeParams
{
bool calc_var_importance;
int nactive_vars;
CvTermCriteria term_crit;
CvRTParams() : CvDTreeParams(5, 10, 0, false, 10, 0, false, false, 0),
calc_var_importance(false), nactive_vars(0)
{
term_crit = cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 50, 0.1);
}
}
和
typedef struct CvTermCriteria
{
int type;
int max_iter;
double epsilon;
}
CvTermCriteria;
CV_INLINE CvTermCriteria cvTermCriteria(int type, int max_iter, double epsilon)
{
CvTermCriteria t;
t.type = type;
t.max_iter = max_iter;
t.epsilon = (float)epsilon;
return t;
}
現在,我初始化CvRTParams
結構和設定值其成員:
CvRTParams params;
params.max_depth = 8;
params.min_sample_count = 10;
params.regression_accuracy = 0;
params.use_surrogates = false;
params.max_categories = 10;
params.priors = priors;
params.calc_var_importance = true;
params.nactive_vars = 9;
params.term_crit.max_iter = 33;
params.term_crit.epsilon = 0.1;
params.term_crit.type = 3;
然後調用一個對象的功能,以params
作爲參數:
CvRTrees* rt = new CvRTrees;
rt->train(t, CV_ROW_SAMPLE, r, 0, 0, var_type, 0, params);
現在會發生什麼? ...
params.term_crit.max_iter
params.term_crit.epsilon
params.term_crit.type
已經改變了!它們不再是33,0.1和3,而是沿着3,7.05541e-313和4的線條,並且這對於CvRtrees :: train()函數的整個持續時間...
你可以關閉該文章嗎? – 2010-04-21 19:21:22
如果通過點擊支票圖標將其變綠,我只能在兩天內這樣做(因爲我回答了我自己的問題,我想)。 – 2010-04-21 20:26:34
提醒已經兩天了 - 請關閉問題。 – 2010-04-25 01:45:41