Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
1c661e75
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
1c661e75
编写于
6月 11, 2019
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #14784 from alalek:backport_14779
上级
a457fbdb
f8791f07
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
45 addition
and
37 deletion
+45
-37
modules/core/src/convert.dispatch.cpp
modules/core/src/convert.dispatch.cpp
+2
-2
modules/core/src/convert.simd.hpp
modules/core/src/convert.simd.hpp
+33
-31
modules/core/src/convert_scale.simd.hpp
modules/core/src/convert_scale.simd.hpp
+10
-4
未找到文件。
modules/core/src/convert.dispatch.cpp
浏览文件 @
1c661e75
...
...
@@ -228,12 +228,12 @@ void convertFp16(InputArray _src, OutputArray _dst)
}
else
ddepth
=
CV_16S
;
func
=
(
BinaryFunc
)
get_cvt32f16f
();
func
=
get_cvt32f16f
();
break
;
case
CV_16S
:
//case CV_16F:
ddepth
=
CV_32F
;
func
=
(
BinaryFunc
)
get_cvt16f32f
();
func
=
get_cvt16f32f
();
break
;
default:
CV_Error
(
Error
::
StsUnsupportedFormat
,
"Unsupported input depth"
);
...
...
modules/core/src/convert.simd.hpp
浏览文件 @
1c661e75
...
...
@@ -144,10 +144,12 @@ static void cvtCopy( const uchar* src, size_t sstep,
}
#define DEF_CVT_FUNC(suffix, cvtfunc, _Ts, _Td, _Twvec) \
static void cvt##suffix(const
_Ts* src, size_t sstep,
uchar*, size_t, \
_Td* dst
, size_t dstep, Size size, void*) \
static void cvt##suffix(const
uchar* src_, size_t sstep, const
uchar*, size_t, \
uchar* dst_
, size_t dstep, Size size, void*) \
{ \
CV_INSTRUMENT_REGION(); \
const _Ts* src = (const _Ts*)src_; \
_Td* dst = (_Td*)dst_; \
cvtfunc<_Ts, _Td, _Twvec>(src, sstep, dst, dstep, size); \
}
...
...
@@ -233,16 +235,16 @@ DEF_CVT_FUNC(16f32f, cvt1_, float16_t, float, v_float32)
///////////// "conversion" w/o conversion ///////////////
static
void
cvt8u
(
const
uchar
*
src
,
size_t
sstep
,
uchar
*
,
size_t
,
uchar
*
dst
,
size_t
dstep
,
Size
size
,
void
*
)
static
void
cvt8u
(
const
uchar
*
src
,
size_t
sstep
,
const
uchar
*
,
size_t
,
uchar
*
dst
,
size_t
dstep
,
Size
size
,
void
*
)
{
CV_INSTRUMENT_REGION
();
cvtCopy
(
src
,
sstep
,
dst
,
dstep
,
size
,
1
);
}
static
void
cvt16u
(
const
u
short
*
src
,
size_t
sstep
,
uchar
*
,
size_t
,
ushort
*
dst
,
size_t
dstep
,
Size
size
,
void
*
)
static
void
cvt16u
(
const
u
char
*
src
,
size_t
sstep
,
const
uchar
*
,
size_t
,
uchar
*
dst
,
size_t
dstep
,
Size
size
,
void
*
)
{
CV_INSTRUMENT_REGION
();
cvtCopy
((
const
uchar
*
)
src
,
sstep
,
(
uchar
*
)
dst
,
dstep
,
size
,
2
);
}
static
void
cvt32s
(
const
int
*
src
,
size_t
sstep
,
uchar
*
,
size_t
,
int
*
dst
,
size_t
dstep
,
Size
size
,
void
*
)
static
void
cvt32s
(
const
uchar
*
src
,
size_t
sstep
,
const
uchar
*
,
size_t
,
uchar
*
dst
,
size_t
dstep
,
Size
size
,
void
*
)
{
CV_INSTRUMENT_REGION
();
cvtCopy
((
const
uchar
*
)
src
,
sstep
,
(
uchar
*
)
dst
,
dstep
,
size
,
4
);
}
static
void
cvt64s
(
const
int64
*
src
,
size_t
sstep
,
uchar
*
,
size_t
,
int64
*
dst
,
size_t
dstep
,
Size
size
,
void
*
)
static
void
cvt64s
(
const
uchar
*
src
,
size_t
sstep
,
const
uchar
*
,
size_t
,
uchar
*
dst
,
size_t
dstep
,
Size
size
,
void
*
)
{
CV_INSTRUMENT_REGION
();
cvtCopy
((
const
uchar
*
)
src
,
sstep
,
(
uchar
*
)
dst
,
dstep
,
size
,
8
);
}
...
...
@@ -346,44 +348,44 @@ BinaryFunc getConvertFunc(int sdepth, int ddepth)
static
BinaryFunc
cvtTab
[][
8
]
=
{
{
(
BinaryFunc
)(
cvt8u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8s8u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16u8u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16s8u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32s8u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32f8u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt64f8u
),
0
//(BinaryFunc)
(cvt16f8u)
(
cvt8u
),
(
cvt8s8u
),
(
cvt16u8u
),
(
cvt16s8u
),
(
cvt32s8u
),
(
cvt32f8u
),
(
cvt64f8u
),
0
//
(cvt16f8u)
},
{
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8u8s
),
(
BinaryFunc
)
cvt8u
,
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16u8s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16s8s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32s8s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32f8s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt64f8s
),
0
//(BinaryFunc)
(cvt16f8s)
(
cvt8u8s
),
cvt8u
,
(
cvt16u8s
),
(
cvt16s8s
),
(
cvt32s8s
),
(
cvt32f8s
),
(
cvt64f8s
),
0
//
(cvt16f8s)
},
{
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8u16u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8s16u
),
(
BinaryFunc
)
cvt16u
,
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16s16u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32s16u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32f16u
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt64f16u
),
0
//(BinaryFunc)
(cvt16f16u)
(
cvt8u16u
),
(
cvt8s16u
),
cvt16u
,
(
cvt16s16u
),
(
cvt32s16u
),
(
cvt32f16u
),
(
cvt64f16u
),
0
//
(cvt16f16u)
},
{
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8u16s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8s16s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16u16s
),
(
BinaryFunc
)
cvt16u
,
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32s16s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32f16s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt64f16s
),
0
//(BinaryFunc)
(cvt16f16s)
(
cvt8u16s
),
(
cvt8s16s
),
(
cvt16u16s
),
cvt16u
,
(
cvt32s16s
),
(
cvt32f16s
),
(
cvt64f16s
),
0
//
(cvt16f16s)
},
{
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8u32s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8s32s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16u32s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16s32s
),
(
BinaryFunc
)
cvt32s
,
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32f32s
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt64f32s
),
0
//(BinaryFunc)
(cvt16f32s)
(
cvt8u32s
),
(
cvt8s32s
),
(
cvt16u32s
),
(
cvt16s32s
),
cvt32s
,
(
cvt32f32s
),
(
cvt64f32s
),
0
//
(cvt16f32s)
},
{
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8u32f
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8s32f
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16u32f
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16s32f
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32s32f
),
(
BinaryFunc
)
cvt32s
,
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt64f32f
),
0
//(BinaryFunc)
(cvt16f32f)
(
cvt8u32f
),
(
cvt8s32f
),
(
cvt16u32f
),
(
cvt16s32f
),
(
cvt32s32f
),
cvt32s
,
(
cvt64f32f
),
0
//
(cvt16f32f)
},
{
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8u64f
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt8s64f
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16u64f
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt16s64f
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32s64f
),
(
BinaryFunc
)
GET_OPTIMIZED
(
cvt32f64f
),
(
BinaryFunc
)(
cvt64s
),
0
//(BinaryFunc)
(cvt16f64f)
(
cvt8u64f
),
(
cvt8s64f
),
(
cvt16u64f
),
(
cvt16s64f
),
(
cvt32s64f
),
(
cvt32f64f
),
(
cvt64s
),
0
//
(cvt16f64f)
},
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
//(
BinaryFunc)(cvt8u16f), (BinaryFunc)(cvt8s16f), (BinaryFunc)(cvt16u16f), (BinaryFunc)
(cvt16s16f),
//(
BinaryFunc)(cvt32s16f), (BinaryFunc)(cvt32f16f), (BinaryFunc)(cvt64f16f), (BinaryFunc)
(cvt16u)
//(
cvt8u16f), (cvt8s16f), (cvt16u16f),
(cvt16s16f),
//(
cvt32s16f), (cvt32f16f), (cvt64f16f),
(cvt16u)
}
};
return
cvtTab
[
CV_MAT_DEPTH
(
ddepth
)][
CV_MAT_DEPTH
(
sdepth
)];
...
...
@@ -391,12 +393,12 @@ BinaryFunc getConvertFunc(int sdepth, int ddepth)
BinaryFunc
get_cvt32f16f
()
{
return
(
BinaryFunc
)
cvt32f16f
;
return
cvt32f16f
;
}
BinaryFunc
get_cvt16f32f
()
{
return
(
BinaryFunc
)
cvt16f32f
;
return
cvt16f32f
;
}
#endif
...
...
modules/core/src/convert_scale.simd.hpp
浏览文件 @
1c661e75
...
...
@@ -197,17 +197,23 @@ cvt_64f( const _Ts* src, size_t sstep, _Td* dst, size_t dstep,
//==================================================================================================
#define DEF_CVT_SCALE_ABS_FUNC(suffix, cvt, stype, dtype, wtype) \
static void cvtScaleAbs##suffix( const
stype* src
, size_t sstep, const uchar*, size_t, \
dtype* dst, size_t dstep, Size size, double* scale
) \
static void cvtScaleAbs##suffix( const
uchar* src_
, size_t sstep, const uchar*, size_t, \
uchar* dst_, size_t dstep, Size size, void* scale_
) \
{ \
const stype* src = (const stype*)src_; \
dtype* dst = (dtype*)dst_; \
double* scale = (double*)scale_; \
cvt(src, sstep, dst, dstep, size, (wtype)scale[0], (wtype)scale[1]); \
}
#define DEF_CVT_SCALE_FUNC(suffix, cvt, stype, dtype, wtype) \
static void cvtScale##suffix( const
stype* src
, size_t sstep, const uchar*, size_t, \
dtype* dst, size_t dstep, Size size, double* scale
) \
static void cvtScale##suffix( const
uchar* src_
, size_t sstep, const uchar*, size_t, \
uchar* dst_, size_t dstep, Size size, void* scale_
) \
{ \
const stype* src = (const stype*)src_; \
dtype* dst = (dtype*)dst_; \
double* scale = (double*)scale_; \
cvt(src, sstep, dst, dstep, size, (wtype)scale[0], (wtype)scale[1]); \
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录