Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
088535fa
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,发现更多精彩内容 >>
提交
088535fa
编写于
1月 17, 2014
作者:
R
Roman Donchenko
提交者:
OpenCV Buildbot
1月 17, 2014
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2159 from SpecLad:1xN
上级
58afe5dd
5f8d8c00
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
23 addition
and
9 deletion
+23
-9
modules/core/src/copy.cpp
modules/core/src/copy.cpp
+2
-4
modules/core/src/precomp.hpp
modules/core/src/precomp.hpp
+0
-5
modules/core/test/test_mat.cpp
modules/core/test/test_mat.cpp
+21
-0
未找到文件。
modules/core/src/copy.cpp
浏览文件 @
088535fa
...
...
@@ -232,10 +232,7 @@ void Mat::copyTo( OutputArray _dst ) const
const
uchar
*
sptr
=
data
;
uchar
*
dptr
=
dst
.
data
;
// to handle the copying 1xn matrix => nx1 std vector.
Size
sz
=
size
()
==
dst
.
size
()
?
getContinuousSize
(
*
this
,
dst
)
:
getContinuousSize
(
*
this
);
Size
sz
=
getContinuousSize
(
*
this
,
dst
);
size_t
len
=
sz
.
width
*
elemSize
();
for
(
;
sz
.
height
--
;
sptr
+=
step
,
dptr
+=
dst
.
step
)
...
...
@@ -286,6 +283,7 @@ void Mat::copyTo( OutputArray _dst, InputArray _mask ) const
if
(
dims
<=
2
)
{
CV_Assert
(
size
()
==
mask
.
size
()
);
Size
sz
=
getContinuousSize
(
*
this
,
dst
,
mask
,
mcn
);
copymask
(
data
,
step
,
mask
.
data
,
mask
.
step
,
dst
.
data
,
dst
.
step
,
sz
,
&
esz
);
return
;
...
...
modules/core/src/precomp.hpp
浏览文件 @
088535fa
...
...
@@ -129,14 +129,12 @@ template<typename T> struct OpMax
inline
Size
getContinuousSize
(
const
Mat
&
m1
,
int
widthScale
=
1
)
{
CV_Assert
(
m1
.
dims
<=
2
);
return
m1
.
isContinuous
()
?
Size
(
m1
.
cols
*
m1
.
rows
*
widthScale
,
1
)
:
Size
(
m1
.
cols
*
widthScale
,
m1
.
rows
);
}
inline
Size
getContinuousSize
(
const
Mat
&
m1
,
const
Mat
&
m2
,
int
widthScale
=
1
)
{
CV_Assert
(
m1
.
dims
<=
2
&&
m1
.
size
()
==
m2
.
size
());
return
(
m1
.
flags
&
m2
.
flags
&
Mat
::
CONTINUOUS_FLAG
)
!=
0
?
Size
(
m1
.
cols
*
m1
.
rows
*
widthScale
,
1
)
:
Size
(
m1
.
cols
*
widthScale
,
m1
.
rows
);
}
...
...
@@ -144,7 +142,6 @@ inline Size getContinuousSize( const Mat& m1, const Mat& m2, int widthScale=1 )
inline
Size
getContinuousSize
(
const
Mat
&
m1
,
const
Mat
&
m2
,
const
Mat
&
m3
,
int
widthScale
=
1
)
{
CV_Assert
(
m1
.
dims
<=
2
&&
m1
.
size
()
==
m2
.
size
()
&&
m1
.
size
()
==
m3
.
size
());
return
(
m1
.
flags
&
m2
.
flags
&
m3
.
flags
&
Mat
::
CONTINUOUS_FLAG
)
!=
0
?
Size
(
m1
.
cols
*
m1
.
rows
*
widthScale
,
1
)
:
Size
(
m1
.
cols
*
widthScale
,
m1
.
rows
);
}
...
...
@@ -153,7 +150,6 @@ inline Size getContinuousSize( const Mat& m1, const Mat& m2,
const
Mat
&
m3
,
const
Mat
&
m4
,
int
widthScale
=
1
)
{
CV_Assert
(
m1
.
dims
<=
2
&&
m1
.
size
()
==
m2
.
size
()
&&
m1
.
size
()
==
m3
.
size
()
&&
m1
.
size
()
==
m4
.
size
());
return
(
m1
.
flags
&
m2
.
flags
&
m3
.
flags
&
m4
.
flags
&
Mat
::
CONTINUOUS_FLAG
)
!=
0
?
Size
(
m1
.
cols
*
m1
.
rows
*
widthScale
,
1
)
:
Size
(
m1
.
cols
*
widthScale
,
m1
.
rows
);
}
...
...
@@ -162,7 +158,6 @@ inline Size getContinuousSize( const Mat& m1, const Mat& m2,
const
Mat
&
m3
,
const
Mat
&
m4
,
const
Mat
&
m5
,
int
widthScale
=
1
)
{
CV_Assert
(
m1
.
dims
<=
2
&&
m1
.
size
()
==
m2
.
size
()
&&
m1
.
size
()
==
m3
.
size
()
&&
m1
.
size
()
==
m4
.
size
()
&&
m1
.
size
()
==
m5
.
size
());
return
(
m1
.
flags
&
m2
.
flags
&
m3
.
flags
&
m4
.
flags
&
m5
.
flags
&
Mat
::
CONTINUOUS_FLAG
)
!=
0
?
Size
(
m1
.
cols
*
m1
.
rows
*
widthScale
,
1
)
:
Size
(
m1
.
cols
*
widthScale
,
m1
.
rows
);
}
...
...
modules/core/test/test_mat.cpp
浏览文件 @
088535fa
...
...
@@ -897,3 +897,24 @@ TEST(Core_Mat, reshape_1942)
);
ASSERT_EQ
(
1
,
cn
);
}
TEST
(
Core_Mat
,
copyNx1ToVector
)
{
cv
::
Mat_
<
uchar
>
src
(
5
,
1
);
cv
::
Mat_
<
uchar
>
ref_dst8
;
cv
::
Mat_
<
ushort
>
ref_dst16
;
std
::
vector
<
uchar
>
dst8
;
std
::
vector
<
ushort
>
dst16
;
src
<<
1
,
2
,
3
,
4
,
5
;
src
.
copyTo
(
ref_dst8
);
src
.
copyTo
(
dst8
);
ASSERT_PRED_FORMAT2
(
cvtest
::
MatComparator
(
0
,
0
),
ref_dst8
,
cv
::
Mat_
<
uchar
>
(
dst8
));
src
.
convertTo
(
ref_dst16
,
CV_16U
);
src
.
convertTo
(
dst16
,
CV_16U
);
ASSERT_PRED_FORMAT2
(
cvtest
::
MatComparator
(
0
,
0
),
ref_dst16
,
cv
::
Mat_
<
ushort
>
(
dst16
));
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录