Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
26c48596
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,发现更多精彩内容 >>
提交
26c48596
编写于
7月 22, 2010
作者:
V
Vladislav Vinogradov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
reduced code convert_to by using templates, merged with copyTo
上级
a0b1107b
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
174 addition
and
280 deletion
+174
-280
modules/gpu/src/cuda/matrix_operations.cu
modules/gpu/src/cuda/matrix_operations.cu
+147
-252
modules/gpu/src/matrix_operations.cpp
modules/gpu/src/matrix_operations.cpp
+2
-4
tests/gpu/src/convert_to.cpp
tests/gpu/src/convert_to.cpp
+25
-24
未找到文件。
modules/gpu/src/cuda/matrix_operations.cu
浏览文件 @
26c48596
此差异已折叠。
点击以展开。
modules/gpu/src/matrix_operations.cpp
浏览文件 @
26c48596
...
...
@@ -114,8 +114,6 @@ void cv::gpu::GpuMat::copyTo( GpuMat& mat, const GpuMat& mask ) const
void
cv
::
gpu
::
GpuMat
::
convertTo
(
GpuMat
&
dst
,
int
rtype
,
double
alpha
,
double
beta
)
const
{
//CV_Assert(!"Not implemented");
bool
noScale
=
fabs
(
alpha
-
1
)
<
std
::
numeric_limits
<
double
>::
epsilon
()
&&
fabs
(
beta
)
<
std
::
numeric_limits
<
double
>::
epsilon
();
if
(
rtype
<
0
)
...
...
@@ -124,11 +122,11 @@ void cv::gpu::GpuMat::convertTo( GpuMat& dst, int rtype, double alpha, double be
rtype
=
CV_MAKETYPE
(
CV_MAT_DEPTH
(
rtype
),
channels
());
int
sdepth
=
depth
(),
ddepth
=
CV_MAT_DEPTH
(
rtype
);
/*
if( sdepth == ddepth && noScale )
if
(
sdepth
==
ddepth
&&
noScale
)
{
copyTo
(
dst
);
return
;
}
*/
}
GpuMat
temp
;
const
GpuMat
*
psrc
=
this
;
...
...
tests/gpu/src/convert_to.cpp
浏览文件 @
26c48596
...
...
@@ -26,7 +26,7 @@ void CV_GpuMatOpConvertTo::run( int /* start_from */)
{
const
Size
img_size
(
67
,
35
);
const
int
types
[]
=
{
CV_8U
,
CV_8S
,
CV_16U
,
CV_16S
,
CV_32S
,
CV_32F
,
CV_64F
/**/
};
const
int
types
[]
=
{
CV_8U
,
CV_8S
,
CV_16U
,
CV_16S
,
CV_32S
,
CV_32F
,
CV_64F
};
const
int
types_num
=
sizeof
(
types
)
/
sizeof
(
int
);
const
char
*
types_str
[]
=
{
"CV_8U"
,
"CV_8S"
,
"CV_16U"
,
"CV_16S"
,
"CV_32S"
,
"CV_32F"
,
"CV_64F"
};
...
...
@@ -39,9 +39,6 @@ void CV_GpuMatOpConvertTo::run( int /* start_from */)
{
for
(
int
c
=
1
;
c
<
2
&&
passed
;
++
c
)
{
//if (i == j)
// continue;
const
int
src_type
=
CV_MAKETYPE
(
types
[
i
],
c
);
const
int
dst_type
=
types
[
j
];
const
double
alpha
=
(
double
)
rand
()
/
RAND_MAX
*
10.0
;
...
...
@@ -53,30 +50,34 @@ void CV_GpuMatOpConvertTo::run( int /* start_from */)
Mat
cpumatdst
;
GpuMat
gpumatdst
;
//double cput = (double)getTickCount();
cpumatsrc
.
convertTo
(
cpumatdst
,
dst_type
,
alpha
,
beta
);
//cput = ((double)getTickCount() - cput) / getTickFrequency();
//TickMeter tm;
//tm.start();
//for(int i = 0; i < 50; ++i)
cpumatsrc
.
convertTo
(
cpumatdst
,
dst_type
,
alpha
,
beta
);
//tm.stop();
//cout << "SRC_TYPE=" << types_str[i] << "C" << c << " DST_TYPE=" << types_str[j] << endl << "\tCPU FPS = " << 50.0/tm.getTimeSec() << endl;
//double gput = (double)getTickCount();
gpumatsrc
.
convertTo
(
gpumatdst
,
dst_type
,
alpha
,
beta
);
//gput = ((double)getTickCount() - gput) / getTickFrequency();
//tm.reset();
/*cout << "convertTo time: " << endl;
cout << "CPU time: " << cput << endl;
cout << "GPU time: " << gput << endl;/**/
try
{
//tm.start();
//for(int i = 0; i < 50; ++i)
gpumatsrc
.
convertTo
(
gpumatdst
,
dst_type
,
alpha
,
beta
);
//tm.stop();
//cout << "\tGPU FPS = " << 50.0/tm.getTimeSec() << endl;
}
catch
(
cv
::
Exception
&
e
)
{
cout
<<
"ERROR: "
<<
e
.
err
<<
endl
;
passed
=
false
;
break
;
}
double
r
=
norm
(
cpumatdst
,
gpumatdst
,
NORM_
L1
);
double
r
=
norm
(
cpumatdst
,
gpumatdst
,
NORM_
INF
);
if
(
r
>
1
)
{
/*namedWindow("CPU");
imshow("CPU", cpumatdst);
namedWindow("GPU");
imshow("GPU", gpumatdst);
waitKey();/**/
cout
<<
"Failed:"
<<
endl
;
cout
<<
"
\t
r = "
<<
r
<<
endl
;
cout
<<
"
\t
SRC_TYPE="
<<
types_str
[
i
]
<<
"C"
<<
c
<<
" DST_TYPE="
<<
types_str
[
j
]
<<
endl
;
/**/
{
cout
<<
"FAILED: "
<<
"SRC_TYPE="
<<
types_str
[
i
]
<<
"C"
<<
c
<<
" DST_TYPE="
<<
types_str
[
j
]
<<
" NORM = "
<<
r
<<
endl
;
passed
=
false
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录