Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
aebed446
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,发现更多精彩内容 >>
提交
aebed446
编写于
5月 18, 2012
作者:
A
Andrey Kamaev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Partly merged the trunk r8322
上级
c3577a28
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
93 addition
and
62 deletion
+93
-62
modules/core/include/opencv2/core/core.hpp
modules/core/include/opencv2/core/core.hpp
+13
-10
modules/core/include/opencv2/core/mat.hpp
modules/core/include/opencv2/core/mat.hpp
+29
-12
modules/core/src/convert.cpp
modules/core/src/convert.cpp
+38
-38
modules/core/src/matrix.cpp
modules/core/src/matrix.cpp
+13
-2
未找到文件。
modules/core/include/opencv2/core/core.hpp
浏览文件 @
aebed446
...
...
@@ -1305,6 +1305,7 @@ public:
template
<
typename
_Tp
>
_InputArray
(
const
vector
<
_Tp
>&
vec
);
template
<
typename
_Tp
>
_InputArray
(
const
vector
<
vector
<
_Tp
>
>&
vec
);
_InputArray
(
const
vector
<
Mat
>&
vec
);
template
<
typename
_Tp
>
_InputArray
(
const
vector
<
Mat_
<
_Tp
>
>&
vec
);
template
<
typename
_Tp
>
_InputArray
(
const
Mat_
<
_Tp
>&
m
);
template
<
typename
_Tp
,
int
m
,
int
n
>
_InputArray
(
const
Matx
<
_Tp
,
m
,
n
>&
matx
);
_InputArray
(
const
Scalar
&
s
);
...
...
@@ -1360,6 +1361,7 @@ public:
template
<
typename
_Tp
>
_OutputArray
(
vector
<
_Tp
>&
vec
);
template
<
typename
_Tp
>
_OutputArray
(
vector
<
vector
<
_Tp
>
>&
vec
);
_OutputArray
(
vector
<
Mat
>&
vec
);
template
<
typename
_Tp
>
_OutputArray
(
vector
<
Mat_
<
_Tp
>
>&
vec
);
template
<
typename
_Tp
>
_OutputArray
(
Mat_
<
_Tp
>&
m
);
template
<
typename
_Tp
,
int
m
,
int
n
>
_OutputArray
(
Matx
<
_Tp
,
m
,
n
>&
matx
);
template
<
typename
_Tp
>
_OutputArray
(
_Tp
*
vec
,
int
n
);
...
...
@@ -1368,6 +1370,7 @@ public:
template
<
typename
_Tp
>
_OutputArray
(
const
vector
<
_Tp
>&
vec
);
template
<
typename
_Tp
>
_OutputArray
(
const
vector
<
vector
<
_Tp
>
>&
vec
);
_OutputArray
(
const
vector
<
Mat
>&
vec
);
template
<
typename
_Tp
>
_OutputArray
(
const
vector
<
Mat_
<
_Tp
>
>&
vec
);
template
<
typename
_Tp
>
_OutputArray
(
const
Mat_
<
_Tp
>&
m
);
template
<
typename
_Tp
,
int
m
,
int
n
>
_OutputArray
(
const
Matx
<
_Tp
,
m
,
n
>&
matx
);
template
<
typename
_Tp
>
_OutputArray
(
const
_Tp
*
vec
,
int
n
);
...
...
@@ -2247,10 +2250,10 @@ CV_EXPORTS_W bool solve(InputArray src1, InputArray src2,
enum
{
SORT_EVERY_ROW
=
0
,
SORT_EVERY_COLUMN
=
1
,
SORT_ASCENDING
=
0
,
SORT_DESCENDING
=
16
SORT_EVERY_ROW
=
0
,
SORT_EVERY_COLUMN
=
1
,
SORT_ASCENDING
=
0
,
SORT_DESCENDING
=
16
};
//! sorts independently each matrix row or each matrix column
...
...
@@ -2273,12 +2276,12 @@ CV_EXPORTS_W bool eigen(InputArray src, bool computeEigenvectors,
enum
{
COVAR_SCRAMBLED
=
0
,
COVAR_NORMAL
=
1
,
COVAR_USE_AVG
=
2
,
COVAR_SCALE
=
4
,
COVAR_ROWS
=
8
,
COVAR_COLS
=
16
COVAR_SCRAMBLED
=
0
,
COVAR_NORMAL
=
1
,
COVAR_USE_AVG
=
2
,
COVAR_SCALE
=
4
,
COVAR_ROWS
=
8
,
COVAR_COLS
=
16
};
//! computes covariation matrix of a set of samples
...
...
modules/core/include/opencv2/core/mat.hpp
浏览文件 @
aebed446
...
...
@@ -1118,6 +1118,9 @@ template<typename _Tp> inline _InputArray::_InputArray(const vector<_Tp>& vec)
template
<
typename
_Tp
>
inline
_InputArray
::
_InputArray
(
const
vector
<
vector
<
_Tp
>
>&
vec
)
:
flags
(
FIXED_TYPE
+
STD_VECTOR_VECTOR
+
DataType
<
_Tp
>::
type
),
obj
((
void
*
)
&
vec
)
{}
template
<
typename
_Tp
>
inline
_InputArray
::
_InputArray
(
const
vector
<
Mat_
<
_Tp
>
>&
vec
)
:
flags
(
FIXED_TYPE
+
STD_VECTOR_MAT
+
DataType
<
_Tp
>::
type
),
obj
((
void
*
)
&
vec
)
{}
template
<
typename
_Tp
,
int
m
,
int
n
>
inline
_InputArray
::
_InputArray
(
const
Matx
<
_Tp
,
m
,
n
>&
mtx
)
:
flags
(
FIXED_TYPE
+
FIXED_SIZE
+
MATX
+
DataType
<
_Tp
>::
type
),
obj
((
void
*
)
&
mtx
),
sz
(
n
,
m
)
{}
...
...
@@ -1130,18 +1133,32 @@ inline _InputArray::_InputArray(const Scalar& s)
template
<
typename
_Tp
>
inline
_InputArray
::
_InputArray
(
const
Mat_
<
_Tp
>&
m
)
:
flags
(
FIXED_TYPE
+
MAT
+
DataType
<
_Tp
>::
type
),
obj
((
void
*
)
&
m
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
vector
<
_Tp
>&
vec
)
:
_InputArray
(
vec
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
vector
<
vector
<
_Tp
>
>&
vec
)
:
_InputArray
(
vec
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
Mat_
<
_Tp
>&
m
)
:
_InputArray
(
m
)
{}
template
<
typename
_Tp
,
int
m
,
int
n
>
inline
_OutputArray
::
_OutputArray
(
Matx
<
_Tp
,
m
,
n
>&
mtx
)
:
_InputArray
(
mtx
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
_Tp
*
vec
,
int
n
)
:
_InputArray
(
vec
,
n
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
const
vector
<
_Tp
>&
vec
)
:
_InputArray
(
vec
)
{
flags
|=
FIXED_SIZE
;}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
const
vector
<
vector
<
_Tp
>
>&
vec
)
:
_InputArray
(
vec
)
{
flags
|=
FIXED_SIZE
;}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
const
Mat_
<
_Tp
>&
m
)
:
_InputArray
(
m
)
{
flags
|=
FIXED_SIZE
;}
template
<
typename
_Tp
,
int
m
,
int
n
>
inline
_OutputArray
::
_OutputArray
(
const
Matx
<
_Tp
,
m
,
n
>&
mtx
)
:
_InputArray
(
mtx
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
const
_Tp
*
vec
,
int
n
)
:
_InputArray
(
vec
,
n
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
vector
<
_Tp
>&
vec
)
:
_InputArray
(
vec
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
vector
<
vector
<
_Tp
>
>&
vec
)
:
_InputArray
(
vec
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
vector
<
Mat_
<
_Tp
>
>&
vec
)
:
_InputArray
(
vec
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
Mat_
<
_Tp
>&
m
)
:
_InputArray
(
m
)
{}
template
<
typename
_Tp
,
int
m
,
int
n
>
inline
_OutputArray
::
_OutputArray
(
Matx
<
_Tp
,
m
,
n
>&
mtx
)
:
_InputArray
(
mtx
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
_Tp
*
vec
,
int
n
)
:
_InputArray
(
vec
,
n
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
const
vector
<
_Tp
>&
vec
)
:
_InputArray
(
vec
)
{
flags
|=
FIXED_SIZE
;}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
const
vector
<
vector
<
_Tp
>
>&
vec
)
:
_InputArray
(
vec
)
{
flags
|=
FIXED_SIZE
;}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
const
vector
<
Mat_
<
_Tp
>
>&
vec
)
:
_InputArray
(
vec
)
{
flags
|=
FIXED_SIZE
;}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
const
Mat_
<
_Tp
>&
m
)
:
_InputArray
(
m
)
{
flags
|=
FIXED_SIZE
;}
template
<
typename
_Tp
,
int
m
,
int
n
>
inline
_OutputArray
::
_OutputArray
(
const
Matx
<
_Tp
,
m
,
n
>&
mtx
)
:
_InputArray
(
mtx
)
{}
template
<
typename
_Tp
>
inline
_OutputArray
::
_OutputArray
(
const
_Tp
*
vec
,
int
n
)
:
_InputArray
(
vec
,
n
)
{}
//////////////////////////////////// Matrix Expressions /////////////////////////////////////////
...
...
modules/core/src/convert.cpp
浏览文件 @
aebed446
...
...
@@ -619,28 +619,28 @@ cvtScale_<short, short, float>( const short* src, size_t sstep,
sstep
/=
sizeof
(
src
[
0
]);
dstep
/=
sizeof
(
dst
[
0
]);
for
(
;
size
.
height
--
;
src
+=
sstep
,
dst
+=
dstep
)
for
(
;
size
.
height
--
;
src
+=
sstep
,
dst
+=
dstep
)
{
int
x
=
0
;
#if CV_SSE2
if
(
USE_SSE2
)
#if CV_SSE2
if
(
USE_SSE2
)
{
__m128
scale128
=
_mm_set1_ps
(
scale
);
__m128
shift128
=
_mm_set1_ps
(
shift
);
for
(;
x
<=
size
.
width
-
8
;
x
+=
8
)
{
__m128i
r0
=
_mm_loadl_epi64
((
const
__m128i
*
)(
src
+
x
));
for
(;
x
<=
size
.
width
-
8
;
x
+=
8
)
{
__m128i
r0
=
_mm_loadl_epi64
((
const
__m128i
*
)(
src
+
x
));
__m128i
r1
=
_mm_loadl_epi64
((
const
__m128i
*
)(
src
+
x
+
4
));
__m128
rf0
=
_mm_cvtepi32_ps
(
_mm_srai_epi32
(
_mm_unpacklo_epi16
(
r0
,
r0
),
16
));
__m128
rf0
=
_mm_cvtepi32_ps
(
_mm_srai_epi32
(
_mm_unpacklo_epi16
(
r0
,
r0
),
16
));
__m128
rf1
=
_mm_cvtepi32_ps
(
_mm_srai_epi32
(
_mm_unpacklo_epi16
(
r1
,
r1
),
16
));
rf0
=
_mm_add_ps
(
_mm_mul_ps
(
rf0
,
scale128
),
shift128
);
rf1
=
_mm_add_ps
(
_mm_mul_ps
(
rf1
,
scale128
),
shift128
);
r0
=
_mm_cvtps_epi32
(
rf0
);
r1
=
_mm_cvtps_epi32
(
rf1
);
r0
=
_mm_packs_epi32
(
r0
,
r1
);
_mm_storeu_si128
((
__m128i
*
)(
dst
+
x
),
r0
);
}
}
r0
=
_mm_cvtps_epi32
(
rf0
);
r1
=
_mm_cvtps_epi32
(
rf1
);
r0
=
_mm_packs_epi32
(
r0
,
r1
);
_mm_storeu_si128
((
__m128i
*
)(
dst
+
x
),
r0
);
}
}
#endif
for
(;
x
<
size
.
width
;
x
++
)
...
...
@@ -659,17 +659,17 @@ cvt_( const T* src, size_t sstep,
for
(
;
size
.
height
--
;
src
+=
sstep
,
dst
+=
dstep
)
{
int
x
=
0
;
#if CV_ENABLE_UNROLLED
for
(
;
x
<=
size
.
width
-
4
;
x
+=
4
)
{
DT
t0
,
t1
;
t0
=
saturate_cast
<
DT
>
(
src
[
x
]);
t1
=
saturate_cast
<
DT
>
(
src
[
x
+
1
]);
dst
[
x
]
=
t0
;
dst
[
x
+
1
]
=
t1
;
t0
=
saturate_cast
<
DT
>
(
src
[
x
+
2
]);
t1
=
saturate_cast
<
DT
>
(
src
[
x
+
3
]);
dst
[
x
+
2
]
=
t0
;
dst
[
x
+
3
]
=
t1
;
}
#if CV_ENABLE_UNROLLED
for
(
;
x
<=
size
.
width
-
4
;
x
+=
4
)
{
DT
t0
,
t1
;
t0
=
saturate_cast
<
DT
>
(
src
[
x
]);
t1
=
saturate_cast
<
DT
>
(
src
[
x
+
1
]);
dst
[
x
]
=
t0
;
dst
[
x
+
1
]
=
t1
;
t0
=
saturate_cast
<
DT
>
(
src
[
x
+
2
]);
t1
=
saturate_cast
<
DT
>
(
src
[
x
+
3
]);
dst
[
x
+
2
]
=
t0
;
dst
[
x
+
3
]
=
t1
;
}
#endif
for
(
;
x
<
size
.
width
;
x
++
)
dst
[
x
]
=
saturate_cast
<
DT
>
(
src
[
x
]);
...
...
@@ -687,20 +687,20 @@ cvt_<float, short>( const float* src, size_t sstep,
for
(
;
size
.
height
--
;
src
+=
sstep
,
dst
+=
dstep
)
{
int
x
=
0
;
#if CV_SSE2
if
(
USE_SSE2
){
for
(
;
x
<=
size
.
width
-
8
;
x
+=
8
)
{
__m128
src128
=
_mm_loadu_ps
(
src
+
x
);
__m128i
src_int128
=
_mm_cvtps_epi32
(
src128
);
src128
=
_mm_loadu_ps
(
src
+
x
+
4
);
__m128i
src1_int128
=
_mm_cvtps_epi32
(
src128
);
src1_int128
=
_mm_packs_epi32
(
src_int128
,
src1_int128
);
_mm_storeu_si128
((
__m128i
*
)(
dst
+
x
),
src1_int128
);
}
}
#if CV_SSE2
if
(
USE_SSE2
){
for
(
;
x
<=
size
.
width
-
8
;
x
+=
8
)
{
__m128
src128
=
_mm_loadu_ps
(
src
+
x
);
__m128i
src_int128
=
_mm_cvtps_epi32
(
src128
);
src128
=
_mm_loadu_ps
(
src
+
x
+
4
);
__m128i
src1_int128
=
_mm_cvtps_epi32
(
src128
);
src1_int128
=
_mm_packs_epi32
(
src_int128
,
src1_int128
);
_mm_storeu_si128
((
__m128i
*
)(
dst
+
x
),
src1_int128
);
}
}
#endif
for
(
;
x
<
size
.
width
;
x
++
)
dst
[
x
]
=
saturate_cast
<
short
>
(
src
[
x
]);
...
...
modules/core/src/matrix.cpp
浏览文件 @
aebed446
...
...
@@ -1470,10 +1470,21 @@ void _OutputArray::create(int dims, const int* size, int type, int i, bool allow
if
(
i
<
0
)
{
CV_Assert
(
dims
==
2
&&
(
size
[
0
]
==
1
||
size
[
1
]
==
1
||
size
[
0
]
*
size
[
1
]
==
0
)
);
size_t
len
=
size
[
0
]
*
size
[
1
]
>
0
?
size
[
0
]
+
size
[
1
]
-
1
:
0
;
size_t
len
=
size
[
0
]
*
size
[
1
]
>
0
?
size
[
0
]
+
size
[
1
]
-
1
:
0
,
len0
=
v
.
size
()
;
CV_Assert
(
!
fixedSize
()
||
len
==
v
.
size
()
);
CV_Assert
(
!
fixedSize
()
||
len
==
len0
);
v
.
resize
(
len
);
if
(
fixedType
()
)
{
int
type
=
CV_MAT_TYPE
(
flags
);
for
(
size_t
j
=
len0
;
j
<
len
;
j
++
)
{
if
(
v
[
i
].
type
()
==
type
)
continue
;
CV_Assert
(
v
[
i
].
empty
()
);
v
[
i
].
flags
=
(
v
[
i
].
flags
&
~
CV_MAT_TYPE_MASK
)
|
type
;
}
}
return
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录