Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
5d2edced
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5d2edced
编写于
1月 13, 2014
作者:
D
Daniil Osokin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added throwing exception when saving untrained SVM model
上级
890f1baf
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
6 deletion
+20
-6
modules/ml/src/svm.cpp
modules/ml/src/svm.cpp
+12
-6
modules/ml/test/test_save_load.cpp
modules/ml/test/test_save_load.cpp
+8
-0
未找到文件。
modules/ml/src/svm.cpp
浏览文件 @
5d2edced
...
...
@@ -2298,14 +2298,24 @@ void CvSVM::write_params( CvFileStorage* fs ) const
}
static
bool
isSvmModelApplicable
(
int
sv_total
,
int
var_all
,
int
var_count
,
int
class_count
)
{
return
(
sv_total
>
0
&&
var_count
>
0
&&
var_count
<=
var_all
&&
class_count
>=
0
);
}
void
CvSVM
::
write
(
CvFileStorage
*
fs
,
const
char
*
name
)
const
{
CV_FUNCNAME
(
"CvSVM::write"
);
__BEGIN__
;
int
i
,
var_count
=
get_var_count
(),
df_count
,
class_count
;
int
i
,
var_count
=
get_var_count
(),
df_count
;
int
class_count
=
class_labels
?
class_labels
->
cols
:
params
.
svm_type
==
CvSVM
::
ONE_CLASS
?
1
:
0
;
const
CvSVMDecisionFunc
*
df
=
decision_func
;
if
(
!
isSvmModelApplicable
(
sv_total
,
var_all
,
var_count
,
class_count
)
)
CV_ERROR
(
CV_StsParseError
,
"SVM model data is invalid, check sv_count, var_* and class_count tags"
);
cvStartWriteStruct
(
fs
,
name
,
CV_NODE_MAP
,
CV_TYPE_NAME_ML_SVM
);
...
...
@@ -2314,9 +2324,6 @@ void CvSVM::write( CvFileStorage* fs, const char* name ) const
cvWriteInt
(
fs
,
"var_all"
,
var_all
);
cvWriteInt
(
fs
,
"var_count"
,
var_count
);
class_count
=
class_labels
?
class_labels
->
cols
:
params
.
svm_type
==
CvSVM
::
ONE_CLASS
?
1
:
0
;
if
(
class_count
)
{
cvWriteInt
(
fs
,
"class_count"
,
class_count
);
...
...
@@ -2454,7 +2461,6 @@ void CvSVM::read_params( CvFileStorage* fs, CvFileNode* svm_node )
__END__
;
}
void
CvSVM
::
read
(
CvFileStorage
*
fs
,
CvFileNode
*
svm_node
)
{
const
double
not_found_dbl
=
DBL_MAX
;
...
...
@@ -2483,7 +2489,7 @@ void CvSVM::read( CvFileStorage* fs, CvFileNode* svm_node )
var_count
=
cvReadIntByName
(
fs
,
svm_node
,
"var_count"
,
var_all
);
class_count
=
cvReadIntByName
(
fs
,
svm_node
,
"class_count"
,
0
);
if
(
sv_total
<=
0
||
var_all
<=
0
||
var_count
<=
0
||
var_count
>
var_all
||
class_count
<
0
)
if
(
!
isSvmModelApplicable
(
sv_total
,
var_all
,
var_count
,
class_count
)
)
CV_ERROR
(
CV_StsParseError
,
"SVM model data is invalid, check sv_count, var_* and class_count tags"
);
CV_CALL
(
class_labels
=
(
CvMat
*
)
cvReadByName
(
fs
,
svm_node
,
"class_labels"
));
...
...
modules/ml/test/test_save_load.cpp
浏览文件 @
5d2edced
...
...
@@ -155,6 +155,14 @@ TEST(ML_RTrees, save_load) { CV_SLMLTest test( CV_RTREES ); test.safe_run(); }
TEST
(
ML_ERTrees
,
save_load
)
{
CV_SLMLTest
test
(
CV_ERTREES
);
test
.
safe_run
();
}
TEST
(
ML_SVM
,
throw_exception_when_save_untrained_model
)
{
SVM
svm
;
string
filename
=
tempfile
(
"svm.xml"
);
ASSERT_THROW
(
svm
.
save
(
filename
.
c_str
()),
Exception
);
remove
(
filename
.
c_str
());
}
TEST
(
DISABLED_ML_SVM
,
linear_save_load
)
{
CvSVM
svm1
,
svm2
,
svm3
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录