Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenCV
opencv
提交
896c34fa
O
opencv
项目概览
OpenCV
/
opencv
上一次同步 9 个月
通知
992
Star
71100
Fork
55581
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
896c34fa
编写于
1月 17, 2017
作者:
V
Vladislav Sovrasov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add support of type headings from YAML1.2
上级
89a740a6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
0 deletion
+37
-0
modules/core/src/persistence.cpp
modules/core/src/persistence.cpp
+20
-0
modules/core/test/test_io.cpp
modules/core/test/test_io.cpp
+17
-0
未找到文件。
modules/core/src/persistence.cpp
浏览文件 @
896c34fa
...
...
@@ -1475,6 +1475,26 @@ icvYMLParseValue( CvFileStorage* fs, char* ptr, CvFileNode* node,
ptr
++
;
value_type
|=
CV_NODE_USER
;
}
if
(
d
==
'<'
)
//support of full type heading from YAML 1.2
{
const
char
*
yamlTypeHeading
=
"<tag:yaml.org,2002:"
;
const
size_t
headingLenght
=
strlen
(
yamlTypeHeading
);
char
*
typeEndPtr
=
++
ptr
;
do
d
=
*++
typeEndPtr
;
while
(
cv_isprint
(
d
)
&&
d
!=
' '
&&
d
!=
'>'
);
if
(
d
==
'>'
&&
(
size_t
)(
typeEndPtr
-
ptr
)
>
headingLenght
)
{
if
(
memcmp
(
ptr
,
yamlTypeHeading
,
headingLenght
)
==
0
)
{
value_type
|=
CV_NODE_USER
;
*
typeEndPtr
=
' '
;
ptr
+=
headingLenght
-
1
;
}
}
}
endptr
=
ptr
++
;
do
d
=
*++
endptr
;
...
...
modules/core/test/test_io.cpp
浏览文件 @
896c34fa
...
...
@@ -996,3 +996,20 @@ TEST(Core_InputOutput, filestorage_vec_vec_io)
remove
((
fileName
+
formats
[
i
]).
c_str
());
}
}
TEST
(
Core_InputOutput
,
filestorage_yaml_advanvced_type_heading
)
{
String
content
=
"%YAML:1.0
\n
cameraMatrix: !<tag:yaml.org,2002:opencv-matrix>
\n
"
" rows: 1
\n
"
" cols: 1
\n
"
" dt: d
\n
"
" data: [ 1. ]"
;
cv
::
FileStorage
fs
(
content
,
cv
::
FileStorage
::
READ
|
cv
::
FileStorage
::
MEMORY
);
cv
::
Mat
inputMatrix
;
cv
::
Mat
actualMatrix
=
cv
::
Mat
::
eye
(
1
,
1
,
CV_64F
);
fs
[
"cameraMatrix"
]
>>
inputMatrix
;
ASSERT_EQ
(
cv
::
norm
(
inputMatrix
,
actualMatrix
,
NORM_INF
),
0.
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录