Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenCV
opencv
提交
947e06a8
O
opencv
项目概览
OpenCV
/
opencv
上一次同步 9 个月
通知
994
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 搜索 >>
提交
947e06a8
编写于
6月 30, 2021
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #20328 from alalek:backport_20321
上级
04d5ba26
db4b1e61
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
4 deletion
+15
-4
modules/core/src/persistence.cpp
modules/core/src/persistence.cpp
+15
-4
未找到文件。
modules/core/src/persistence.cpp
浏览文件 @
947e06a8
...
...
@@ -6,6 +6,8 @@
#include "precomp.hpp"
#include "persistence.hpp"
using
namespace
cv
;
char
*
icv_itoa
(
int
_val
,
char
*
buffer
,
int
/*radix*/
)
{
const
int
radix
=
10
;
...
...
@@ -519,12 +521,16 @@ static const char symbols[9] = "ucwsifdr";
char
icvTypeSymbol
(
int
depth
)
{
CV_Assert
(
depth
>=
0
&&
depth
<
9
);
CV_StaticAssert
(
CV_64F
==
6
,
""
);
CV_Assert
(
depth
>=
0
&&
depth
<=
CV_64F
);
CV_CheckDepth
(
depth
,
depth
>=
0
&&
depth
<=
CV_64F
,
""
);
return
symbols
[
depth
];
}
static
int
icvSymbolToType
(
char
c
)
{
if
(
c
==
'r'
)
return
CV_SEQ_ELTYPE_PTR
;
const
char
*
pos
=
strchr
(
symbols
,
c
);
if
(
!
pos
)
CV_Error
(
CV_StsBadArg
,
"Invalid data type specification"
);
...
...
@@ -618,8 +624,12 @@ int icvCalcStructSize( const char* dt, int initial_size )
{
int
size
=
icvCalcElemSize
(
dt
,
initial_size
);
size_t
elem_max_size
=
0
;
for
(
const
char
*
type
=
dt
;
*
type
!=
'\0'
;
type
++
)
{
switch
(
*
type
)
for
(
const
char
*
type
=
dt
;
*
type
!=
'\0'
;
type
++
)
{
char
v
=
*
type
;
if
(
v
>=
'0'
&&
v
<=
'9'
)
continue
;
// skip vector size
switch
(
v
)
{
case
'u'
:
{
elem_max_size
=
std
::
max
(
elem_max_size
,
sizeof
(
uchar
)
);
break
;
}
case
'c'
:
{
elem_max_size
=
std
::
max
(
elem_max_size
,
sizeof
(
schar
)
);
break
;
}
...
...
@@ -628,7 +638,8 @@ int icvCalcStructSize( const char* dt, int initial_size )
case
'i'
:
{
elem_max_size
=
std
::
max
(
elem_max_size
,
sizeof
(
int
)
);
break
;
}
case
'f'
:
{
elem_max_size
=
std
::
max
(
elem_max_size
,
sizeof
(
float
)
);
break
;
}
case
'd'
:
{
elem_max_size
=
std
::
max
(
elem_max_size
,
sizeof
(
double
)
);
break
;
}
default:
break
;
default:
CV_Error_
(
Error
::
StsNotImplemented
,
(
"Unknown type identifier: '%c' in '%s'"
,
(
char
)(
*
type
),
dt
));
}
}
size
=
cvAlign
(
size
,
static_cast
<
int
>
(
elem_max_size
)
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录