Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenCV
opencv
提交
1fe276d0
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 搜索 >>
提交
1fe276d0
编写于
10月 26, 2020
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
core: move inline code from mat.inl.hpp (OpenCV 4.x additions)
base commit:
aac7c546
上级
f345ed56
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
119 addition
and
121 deletion
+119
-121
modules/core/include/opencv2/core/mat.inl.hpp
modules/core/include/opencv2/core/mat.inl.hpp
+0
-121
modules/core/src/matrix.cpp
modules/core/src/matrix.cpp
+60
-0
modules/core/src/umatrix.cpp
modules/core/src/umatrix.cpp
+59
-0
未找到文件。
modules/core/include/opencv2/core/mat.inl.hpp
浏览文件 @
1fe276d0
...
...
@@ -1112,67 +1112,6 @@ void Mat::push_back(const std::vector<_Tp>& v)
push_back
(
Mat
(
v
));
}
inline
Mat
::
Mat
(
Mat
&&
m
)
:
flags
(
m
.
flags
),
dims
(
m
.
dims
),
rows
(
m
.
rows
),
cols
(
m
.
cols
),
data
(
m
.
data
),
datastart
(
m
.
datastart
),
dataend
(
m
.
dataend
),
datalimit
(
m
.
datalimit
),
allocator
(
m
.
allocator
),
u
(
m
.
u
),
size
(
&
rows
)
{
if
(
m
.
dims
<=
2
)
// move new step/size info
{
step
[
0
]
=
m
.
step
[
0
];
step
[
1
]
=
m
.
step
[
1
];
}
else
{
CV_DbgAssert
(
m
.
step
.
p
!=
m
.
step
.
buf
);
step
.
p
=
m
.
step
.
p
;
size
.
p
=
m
.
size
.
p
;
m
.
step
.
p
=
m
.
step
.
buf
;
m
.
size
.
p
=
&
m
.
rows
;
}
m
.
flags
=
MAGIC_VAL
;
m
.
dims
=
m
.
rows
=
m
.
cols
=
0
;
m
.
data
=
NULL
;
m
.
datastart
=
NULL
;
m
.
dataend
=
NULL
;
m
.
datalimit
=
NULL
;
m
.
allocator
=
NULL
;
m
.
u
=
NULL
;
}
inline
Mat
&
Mat
::
operator
=
(
Mat
&&
m
)
{
if
(
this
==
&
m
)
return
*
this
;
release
();
flags
=
m
.
flags
;
dims
=
m
.
dims
;
rows
=
m
.
rows
;
cols
=
m
.
cols
;
data
=
m
.
data
;
datastart
=
m
.
datastart
;
dataend
=
m
.
dataend
;
datalimit
=
m
.
datalimit
;
allocator
=
m
.
allocator
;
u
=
m
.
u
;
if
(
step
.
p
!=
step
.
buf
)
// release self step/size
{
fastFree
(
step
.
p
);
step
.
p
=
step
.
buf
;
size
.
p
=
&
rows
;
}
if
(
m
.
dims
<=
2
)
// move new step/size info
{
step
[
0
]
=
m
.
step
[
0
];
step
[
1
]
=
m
.
step
[
1
];
}
else
{
CV_DbgAssert
(
m
.
step
.
p
!=
m
.
step
.
buf
);
step
.
p
=
m
.
step
.
p
;
size
.
p
=
m
.
size
.
p
;
m
.
step
.
p
=
m
.
step
.
buf
;
m
.
size
.
p
=
&
m
.
rows
;
}
m
.
flags
=
MAGIC_VAL
;
m
.
dims
=
m
.
rows
=
m
.
cols
=
0
;
m
.
data
=
NULL
;
m
.
datastart
=
NULL
;
m
.
dataend
=
NULL
;
m
.
datalimit
=
NULL
;
m
.
allocator
=
NULL
;
m
.
u
=
NULL
;
return
*
this
;
}
///////////////////////////// MatSize ////////////////////////////
...
...
@@ -3342,66 +3281,6 @@ size_t UMat::step1(int i) const
return
step
.
p
[
i
]
/
elemSize1
();
}
inline
UMat
::
UMat
(
UMat
&&
m
)
:
flags
(
m
.
flags
),
dims
(
m
.
dims
),
rows
(
m
.
rows
),
cols
(
m
.
cols
),
allocator
(
m
.
allocator
),
usageFlags
(
m
.
usageFlags
),
u
(
m
.
u
),
offset
(
m
.
offset
),
size
(
&
rows
)
{
if
(
m
.
dims
<=
2
)
// move new step/size info
{
step
[
0
]
=
m
.
step
[
0
];
step
[
1
]
=
m
.
step
[
1
];
}
else
{
CV_DbgAssert
(
m
.
step
.
p
!=
m
.
step
.
buf
);
step
.
p
=
m
.
step
.
p
;
size
.
p
=
m
.
size
.
p
;
m
.
step
.
p
=
m
.
step
.
buf
;
m
.
size
.
p
=
&
m
.
rows
;
}
m
.
flags
=
MAGIC_VAL
;
m
.
dims
=
m
.
rows
=
m
.
cols
=
0
;
m
.
allocator
=
NULL
;
m
.
u
=
NULL
;
m
.
offset
=
0
;
}
inline
UMat
&
UMat
::
operator
=
(
UMat
&&
m
)
{
if
(
this
==
&
m
)
return
*
this
;
release
();
flags
=
m
.
flags
;
dims
=
m
.
dims
;
rows
=
m
.
rows
;
cols
=
m
.
cols
;
allocator
=
m
.
allocator
;
usageFlags
=
m
.
usageFlags
;
u
=
m
.
u
;
offset
=
m
.
offset
;
if
(
step
.
p
!=
step
.
buf
)
// release self step/size
{
fastFree
(
step
.
p
);
step
.
p
=
step
.
buf
;
size
.
p
=
&
rows
;
}
if
(
m
.
dims
<=
2
)
// move new step/size info
{
step
[
0
]
=
m
.
step
[
0
];
step
[
1
]
=
m
.
step
[
1
];
}
else
{
CV_DbgAssert
(
m
.
step
.
p
!=
m
.
step
.
buf
);
step
.
p
=
m
.
step
.
p
;
size
.
p
=
m
.
size
.
p
;
m
.
step
.
p
=
m
.
step
.
buf
;
m
.
size
.
p
=
&
m
.
rows
;
}
m
.
flags
=
MAGIC_VAL
;
m
.
dims
=
m
.
rows
=
m
.
cols
=
0
;
m
.
allocator
=
NULL
;
m
.
u
=
NULL
;
m
.
offset
=
0
;
return
*
this
;
}
inline
bool
UMatData
::
hostCopyObsolete
()
const
{
return
(
flags
&
HOST_COPY_OBSOLETE
)
!=
0
;
}
inline
bool
UMatData
::
deviceCopyObsolete
()
const
{
return
(
flags
&
DEVICE_COPY_OBSOLETE
)
!=
0
;
}
...
...
modules/core/src/matrix.cpp
浏览文件 @
1fe276d0
...
...
@@ -599,6 +599,66 @@ size_t Mat::total(int startDim, int endDim) const
}
Mat
::
Mat
(
Mat
&&
m
)
:
flags
(
m
.
flags
),
dims
(
m
.
dims
),
rows
(
m
.
rows
),
cols
(
m
.
cols
),
data
(
m
.
data
),
datastart
(
m
.
datastart
),
dataend
(
m
.
dataend
),
datalimit
(
m
.
datalimit
),
allocator
(
m
.
allocator
),
u
(
m
.
u
),
size
(
&
rows
)
{
if
(
m
.
dims
<=
2
)
// move new step/size info
{
step
[
0
]
=
m
.
step
[
0
];
step
[
1
]
=
m
.
step
[
1
];
}
else
{
CV_Assert
(
m
.
step
.
p
!=
m
.
step
.
buf
);
step
.
p
=
m
.
step
.
p
;
size
.
p
=
m
.
size
.
p
;
m
.
step
.
p
=
m
.
step
.
buf
;
m
.
size
.
p
=
&
m
.
rows
;
}
m
.
flags
=
MAGIC_VAL
;
m
.
dims
=
m
.
rows
=
m
.
cols
=
0
;
m
.
data
=
NULL
;
m
.
datastart
=
NULL
;
m
.
dataend
=
NULL
;
m
.
datalimit
=
NULL
;
m
.
allocator
=
NULL
;
m
.
u
=
NULL
;
}
Mat
&
Mat
::
operator
=
(
Mat
&&
m
)
{
if
(
this
==
&
m
)
return
*
this
;
release
();
flags
=
m
.
flags
;
dims
=
m
.
dims
;
rows
=
m
.
rows
;
cols
=
m
.
cols
;
data
=
m
.
data
;
datastart
=
m
.
datastart
;
dataend
=
m
.
dataend
;
datalimit
=
m
.
datalimit
;
allocator
=
m
.
allocator
;
u
=
m
.
u
;
if
(
step
.
p
!=
step
.
buf
)
// release self step/size
{
fastFree
(
step
.
p
);
step
.
p
=
step
.
buf
;
size
.
p
=
&
rows
;
}
if
(
m
.
dims
<=
2
)
// move new step/size info
{
step
[
0
]
=
m
.
step
[
0
];
step
[
1
]
=
m
.
step
[
1
];
}
else
{
CV_Assert
(
m
.
step
.
p
!=
m
.
step
.
buf
);
step
.
p
=
m
.
step
.
p
;
size
.
p
=
m
.
size
.
p
;
m
.
step
.
p
=
m
.
step
.
buf
;
m
.
size
.
p
=
&
m
.
rows
;
}
m
.
flags
=
MAGIC_VAL
;
m
.
dims
=
m
.
rows
=
m
.
cols
=
0
;
m
.
data
=
NULL
;
m
.
datastart
=
NULL
;
m
.
dataend
=
NULL
;
m
.
datalimit
=
NULL
;
m
.
allocator
=
NULL
;
m
.
u
=
NULL
;
return
*
this
;
}
void
Mat
::
create
(
int
d
,
const
int
*
_sizes
,
int
_type
)
{
...
...
modules/core/src/umatrix.cpp
浏览文件 @
1fe276d0
...
...
@@ -375,6 +375,65 @@ size_t UMat::total() const
}
UMat
::
UMat
(
UMat
&&
m
)
:
flags
(
m
.
flags
),
dims
(
m
.
dims
),
rows
(
m
.
rows
),
cols
(
m
.
cols
),
allocator
(
m
.
allocator
),
usageFlags
(
m
.
usageFlags
),
u
(
m
.
u
),
offset
(
m
.
offset
),
size
(
&
rows
)
{
if
(
m
.
dims
<=
2
)
// move new step/size info
{
step
[
0
]
=
m
.
step
[
0
];
step
[
1
]
=
m
.
step
[
1
];
}
else
{
CV_DbgAssert
(
m
.
step
.
p
!=
m
.
step
.
buf
);
step
.
p
=
m
.
step
.
p
;
size
.
p
=
m
.
size
.
p
;
m
.
step
.
p
=
m
.
step
.
buf
;
m
.
size
.
p
=
&
m
.
rows
;
}
m
.
flags
=
MAGIC_VAL
;
m
.
dims
=
m
.
rows
=
m
.
cols
=
0
;
m
.
allocator
=
NULL
;
m
.
u
=
NULL
;
m
.
offset
=
0
;
}
UMat
&
UMat
::
operator
=
(
UMat
&&
m
)
{
if
(
this
==
&
m
)
return
*
this
;
release
();
flags
=
m
.
flags
;
dims
=
m
.
dims
;
rows
=
m
.
rows
;
cols
=
m
.
cols
;
allocator
=
m
.
allocator
;
usageFlags
=
m
.
usageFlags
;
u
=
m
.
u
;
offset
=
m
.
offset
;
if
(
step
.
p
!=
step
.
buf
)
// release self step/size
{
fastFree
(
step
.
p
);
step
.
p
=
step
.
buf
;
size
.
p
=
&
rows
;
}
if
(
m
.
dims
<=
2
)
// move new step/size info
{
step
[
0
]
=
m
.
step
[
0
];
step
[
1
]
=
m
.
step
[
1
];
}
else
{
CV_DbgAssert
(
m
.
step
.
p
!=
m
.
step
.
buf
);
step
.
p
=
m
.
step
.
p
;
size
.
p
=
m
.
size
.
p
;
m
.
step
.
p
=
m
.
step
.
buf
;
m
.
size
.
p
=
&
m
.
rows
;
}
m
.
flags
=
MAGIC_VAL
;
m
.
dims
=
m
.
rows
=
m
.
cols
=
0
;
m
.
allocator
=
NULL
;
m
.
u
=
NULL
;
m
.
offset
=
0
;
return
*
this
;
}
MatAllocator
*
UMat
::
getStdAllocator
()
{
#ifdef HAVE_OPENCL
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录