Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
54d21590
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
54d21590
编写于
11月 22, 2016
作者:
V
Vadim Pisarevsky
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #7627 from sovrasov:fs_vec_of_vec
上级
511c0c2e
7c266fff
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
57 addition
and
1 deletion
+57
-1
modules/core/include/opencv2/core/persistence.hpp
modules/core/include/opencv2/core/persistence.hpp
+11
-1
modules/core/test/test_io.cpp
modules/core/test/test_io.cpp
+46
-0
未找到文件。
modules/core/include/opencv2/core/persistence.hpp
浏览文件 @
54d21590
...
@@ -958,7 +958,6 @@ void write( FileStorage& fs, const std::vector<_Tp>& vec )
...
@@ -958,7 +958,6 @@ void write( FileStorage& fs, const std::vector<_Tp>& vec )
w
(
vec
);
w
(
vec
);
}
}
template
<
typename
_Tp
>
static
inline
template
<
typename
_Tp
>
static
inline
void
write
(
FileStorage
&
fs
,
const
String
&
name
,
const
Point_
<
_Tp
>&
pt
)
void
write
(
FileStorage
&
fs
,
const
String
&
name
,
const
Point_
<
_Tp
>&
pt
)
{
{
...
@@ -1022,6 +1021,17 @@ void write( FileStorage& fs, const String& name, const std::vector<_Tp>& vec )
...
@@ -1022,6 +1021,17 @@ void write( FileStorage& fs, const String& name, const std::vector<_Tp>& vec )
write
(
fs
,
vec
);
write
(
fs
,
vec
);
}
}
template
<
typename
_Tp
>
static
inline
void
write
(
FileStorage
&
fs
,
const
String
&
name
,
const
std
::
vector
<
std
::
vector
<
_Tp
>
>&
vec
)
{
cv
::
internal
::
WriteStructContext
ws
(
fs
,
name
,
FileNode
::
SEQ
);
for
(
size_t
i
=
0
;
i
<
vec
.
size
();
i
++
)
{
cv
::
internal
::
WriteStructContext
ws_
(
fs
,
name
,
FileNode
::
SEQ
+
(
DataType
<
_Tp
>::
fmt
!=
0
?
FileNode
::
FLOW
:
0
));
write
(
fs
,
vec
[
i
]);
}
}
//! @} FileStorage
//! @} FileStorage
//! @relates cv::FileNode
//! @relates cv::FileNode
...
...
modules/core/test/test_io.cpp
浏览文件 @
54d21590
...
@@ -950,3 +950,49 @@ TEST(Core_InputOutput, filestorage_utf8_bom)
...
@@ -950,3 +950,49 @@ TEST(Core_InputOutput, filestorage_utf8_bom)
fs
.
release
();
fs
.
release
();
});
});
}
}
TEST
(
Core_InputOutput
,
filestorage_vec_vec_io
)
{
std
::
vector
<
std
::
vector
<
Mat
>
>
outputMats
(
3
);
for
(
size_t
i
=
0
;
i
<
outputMats
.
size
();
i
++
)
{
outputMats
[
i
].
resize
(
i
+
1
);
for
(
size_t
j
=
0
;
j
<
outputMats
[
i
].
size
();
j
++
)
{
outputMats
[
i
][
j
]
=
Mat
::
eye
((
int
)
i
+
1
,
(
int
)
i
+
1
,
CV_8U
);
}
}
String
fileName
=
"vec_test."
;
std
::
vector
<
String
>
formats
;
formats
.
push_back
(
"xml"
);
formats
.
push_back
(
"yml"
);
formats
.
push_back
(
"json"
);
for
(
size_t
i
=
0
;
i
<
formats
.
size
();
i
++
)
{
FileStorage
writer
(
fileName
+
formats
[
i
],
FileStorage
::
WRITE
);
writer
<<
"vecVecMat"
<<
outputMats
;
writer
.
release
();
FileStorage
reader
(
fileName
+
formats
[
i
],
FileStorage
::
READ
);
std
::
vector
<
std
::
vector
<
Mat
>
>
testMats
;
reader
[
"vecVecMat"
]
>>
testMats
;
ASSERT_EQ
(
testMats
.
size
(),
testMats
.
size
());
for
(
size_t
j
=
0
;
j
<
testMats
.
size
();
j
++
)
{
ASSERT_EQ
(
testMats
[
j
].
size
(),
outputMats
[
j
].
size
());
for
(
size_t
k
=
0
;
k
<
testMats
[
j
].
size
();
k
++
)
{
ASSERT_TRUE
(
norm
(
outputMats
[
j
][
k
]
-
testMats
[
j
][
k
],
NORM_INF
)
==
0
);
}
}
reader
.
release
();
remove
((
fileName
+
formats
[
i
]).
c_str
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录