Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
60e572bb
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,发现更多精彩内容 >>
提交
60e572bb
编写于
9月 28, 2010
作者:
A
Anatoly Baksheev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed gpu morphology: now kernel in gpu is passed to npp functions.
warnings in cxcore added graphcut wrapper
上级
5d95cd75
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
108 addition
and
16 deletion
+108
-16
modules/core/src/matop.cpp
modules/core/src/matop.cpp
+10
-10
modules/gpu/include/opencv2/gpu/gpu.hpp
modules/gpu/include/opencv2/gpu/gpu.hpp
+6
-0
modules/gpu/src/filtering_npp.cpp
modules/gpu/src/filtering_npp.cpp
+6
-3
modules/gpu/src/graphcuts.cpp
modules/gpu/src/graphcuts.cpp
+83
-0
tests/gpu/src/morf_filters.cpp
tests/gpu/src/morf_filters.cpp
+3
-3
未找到文件。
modules/core/src/matop.cpp
浏览文件 @
60e572bb
...
...
@@ -57,7 +57,7 @@ public:
MatOp_Identity
()
{}
virtual
~
MatOp_Identity
()
{}
bool
elementWise
(
const
MatExpr
&
expr
)
const
{
return
true
;
}
bool
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
true
;
}
void
assign
(
const
MatExpr
&
expr
,
Mat
&
m
,
int
type
=-
1
)
const
;
static
void
makeExpr
(
MatExpr
&
res
,
const
Mat
&
m
);
...
...
@@ -71,7 +71,7 @@ public:
MatOp_AddEx
()
{}
virtual
~
MatOp_AddEx
()
{}
bool
elementWise
(
const
MatExpr
&
expr
)
const
{
return
true
;
}
bool
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
true
;
}
void
assign
(
const
MatExpr
&
expr
,
Mat
&
m
,
int
type
=-
1
)
const
;
void
add
(
const
MatExpr
&
e1
,
const
Scalar
&
s
,
MatExpr
&
res
)
const
;
...
...
@@ -93,7 +93,7 @@ public:
MatOp_Bin
()
{}
virtual
~
MatOp_Bin
()
{}
bool
elementWise
(
const
MatExpr
&
expr
)
const
{
return
true
;
}
bool
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
true
;
}
void
assign
(
const
MatExpr
&
expr
,
Mat
&
m
,
int
type
=-
1
)
const
;
void
multiply
(
const
MatExpr
&
e1
,
double
s
,
MatExpr
&
res
)
const
;
...
...
@@ -111,7 +111,7 @@ public:
MatOp_Cmp
()
{}
virtual
~
MatOp_Cmp
()
{}
bool
elementWise
(
const
MatExpr
&
expr
)
const
{
return
true
;
}
bool
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
true
;
}
void
assign
(
const
MatExpr
&
expr
,
Mat
&
m
,
int
type
=-
1
)
const
;
static
void
makeExpr
(
MatExpr
&
res
,
int
cmpop
,
const
Mat
&
a
,
const
Mat
&
b
);
...
...
@@ -126,7 +126,7 @@ public:
MatOp_GEMM
()
{}
virtual
~
MatOp_GEMM
()
{}
bool
elementWise
(
const
MatExpr
&
expr
)
const
{
return
false
;
}
bool
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
false
;
}
void
assign
(
const
MatExpr
&
expr
,
Mat
&
m
,
int
type
=-
1
)
const
;
void
add
(
const
MatExpr
&
e1
,
const
MatExpr
&
e2
,
MatExpr
&
res
)
const
;
...
...
@@ -147,7 +147,7 @@ public:
MatOp_Invert
()
{}
virtual
~
MatOp_Invert
()
{}
bool
elementWise
(
const
MatExpr
&
expr
)
const
{
return
false
;
}
bool
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
false
;
}
void
assign
(
const
MatExpr
&
expr
,
Mat
&
m
,
int
type
=-
1
)
const
;
void
matmul
(
const
MatExpr
&
expr1
,
const
MatExpr
&
expr2
,
MatExpr
&
res
)
const
;
...
...
@@ -163,7 +163,7 @@ public:
MatOp_T
()
{}
virtual
~
MatOp_T
()
{}
bool
elementWise
(
const
MatExpr
&
expr
)
const
{
return
false
;
}
bool
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
false
;
}
void
assign
(
const
MatExpr
&
expr
,
Mat
&
m
,
int
type
=-
1
)
const
;
void
multiply
(
const
MatExpr
&
e1
,
double
s
,
MatExpr
&
res
)
const
;
...
...
@@ -180,7 +180,7 @@ public:
MatOp_Solve
()
{}
virtual
~
MatOp_Solve
()
{}
bool
elementWise
(
const
MatExpr
&
expr
)
const
{
return
false
;
}
bool
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
false
;
}
void
assign
(
const
MatExpr
&
expr
,
Mat
&
m
,
int
type
=-
1
)
const
;
static
void
makeExpr
(
MatExpr
&
res
,
int
method
,
const
Mat
&
a
,
const
Mat
&
b
);
...
...
@@ -194,7 +194,7 @@ public:
MatOp_Initializer
()
{}
virtual
~
MatOp_Initializer
()
{}
bool
elementWise
(
const
MatExpr
&
expr
)
const
{
return
false
;
}
bool
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
false
;
}
void
assign
(
const
MatExpr
&
expr
,
Mat
&
m
,
int
type
=-
1
)
const
;
void
multiply
(
const
MatExpr
&
e
,
double
s
,
MatExpr
&
res
)
const
;
...
...
@@ -217,7 +217,7 @@ static inline bool isInitializer(const MatExpr& e) { return e.op == &g_MatOp_Ini
/////////////////////////////////////////////////////////////////////////////////////////////////////
bool
MatOp
::
elementWise
(
const
MatExpr
&
expr
)
const
bool
MatOp
::
elementWise
(
const
MatExpr
&
/*expr*/
)
const
{
return
false
;
}
...
...
modules/gpu/include/opencv2/gpu/gpu.hpp
浏览文件 @
60e572bb
...
...
@@ -533,6 +533,12 @@ namespace cv
//! applies an advanced morphological operation to the image
CV_EXPORTS
void
morphologyEx
(
const
GpuMat
&
src
,
GpuMat
&
dst
,
int
op
,
const
Mat
&
kernel
,
Point
anchor
,
int
iterations
);
//////////////////////////////// Image Labeling ////////////////////////////////
//!performs labeling via graph cuts
CV_EXPORTS
void
graphcut
(
GpuMat
&
terminals
,
GpuMat
&
leftTransp
,
GpuMat
&
rightTransp
,
GpuMat
&
top
,
GpuMat
&
bottom
,
GpuMat
&
labels
,
GpuMat
&
buf
);
//////////////////////////////// StereoBM_GPU ////////////////////////////////
class
CV_EXPORTS
StereoBM_GPU
...
...
modules/gpu/src/filtering_npp.cpp
浏览文件 @
60e572bb
...
...
@@ -62,11 +62,14 @@ namespace
void
morphoogy_caller
(
npp_morf_func
func
,
const
GpuMat
&
src
,
GpuMat
&
dst
,
const
Mat
&
kernel
,
Point
anchor
,
int
iterations
)
{
CV_Assert
(
src
.
type
()
==
CV_8U
||
src
.
type
()
==
CV_8UC4
);
CV_Assert
(
kernel
.
isContinuous
()
&&
kernel
.
type
()
==
CV_8U
&&
(
kernel
.
cols
&
1
)
!=
0
&&
(
kernel
.
rows
&
1
)
!=
0
);
CV_Assert
(
kernel
.
type
()
==
CV_8U
&&
(
kernel
.
cols
&
1
)
!=
0
&&
(
kernel
.
rows
&
1
)
!=
0
);
// in NPP for Cuda 3.1 only such anchor is supported.
CV_Assert
(
anchor
.
x
==
kernel
.
cols
/
2
&&
anchor
.
y
==
kernel
.
rows
/
2
);
const
Mat
&
cont_krnl
=
(
kernel
.
isContinuous
()
?
kernel
:
kernel
.
clone
()).
reshape
(
1
,
1
);
GpuMat
gpu_krnl
(
cont_krnl
);
NppiSize
sz
;
sz
.
width
=
src
.
cols
;
sz
.
height
=
src
.
rows
;
...
...
@@ -82,7 +85,7 @@ namespace
dst
.
create
(
src
.
size
(),
src
.
type
());
for
(
int
i
=
0
;
i
<
iterations
;
++
i
)
nppSafeCall
(
func
(
src
.
ptr
<
Npp8u
>
(),
src
.
step
,
dst
.
ptr
<
Npp8u
>
(),
dst
.
step
,
sz
,
kerne
l
.
ptr
<
Npp8u
>
(),
mask_sz
,
anc
)
);
nppSafeCall
(
func
(
src
.
ptr
<
Npp8u
>
(),
src
.
step
,
dst
.
ptr
<
Npp8u
>
(),
dst
.
step
,
sz
,
gpu_krn
l
.
ptr
<
Npp8u
>
(),
mask_sz
,
anc
)
);
}
}
...
...
modules/gpu/src/graphcuts.cpp
0 → 100644
浏览文件 @
60e572bb
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other GpuMaterials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or bpied warranties, including, but not limited to, the bpied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "precomp.hpp"
#if !defined (HAVE_CUDA)
void
cv
::
gpu
::
graphcut
(
GpuMat
&
,
GpuMat
&
,
GpuMat
&
,
GpuMat
&
,
GpuMat
&
,
GpuMat
&
,
GpuMat
&
)
{
throw_nogpu
();
}
#else
/* !defined (HAVE_CUDA) */
void
cv
::
gpu
::
graphcut
(
GpuMat
&
terminals
,
GpuMat
&
leftTransp
,
GpuMat
&
rightTransp
,
GpuMat
&
top
,
GpuMat
&
bottom
,
GpuMat
&
labels
,
GpuMat
&
buf
)
{
CV_Assert
(
leftTransp
.
type
()
==
CV_32S
&&
rightTransp
.
type
()
==
CV_32S
);
CV_Assert
(
terminals
.
type
()
==
CV_32S
&&
bottom
.
type
()
==
CV_32S
&&
top
.
type
()
==
CV_32S
);
CV_Assert
(
terminals
.
size
()
==
leftTransp
.
size
());
CV_Assert
(
terminals
.
size
()
==
rightTransp
.
size
());
CV_Assert
(
terminals
.
size
()
==
top
.
size
()
&&
terminals
.
size
()
==
bottom
.
size
());
CV_Assert
(
top
.
step
==
bottom
.
step
&&
top
.
step
==
terminals
.
step
&&
rightTransp
.
step
==
leftTransp
.
step
);
labels
.
create
(
terminals
.
size
(),
CV_8U
);
NppiSize
sznpp
;
sznpp
.
width
=
terminals
.
cols
;
sznpp
.
height
=
terminals
.
rows
;
int
bufsz
;
nppSafeCall
(
nppiGraphcutGetSize
(
sznpp
,
&
bufsz
)
);
if
((
size_t
)
bufsz
>
buf
.
cols
*
buf
.
rows
*
buf
.
elemSize
())
buf
.
create
(
1
,
bufsz
,
CV_8U
);
nppSafeCall
(
nppiGraphcut_32s8u
(
terminals
.
ptr
<
Npp32s
>
(),
leftTransp
.
ptr
<
Npp32s
>
(),
rightTransp
.
ptr
<
Npp32s
>
(),
top
.
ptr
<
Npp32s
>
(),
bottom
.
ptr
<
Npp32s
>
(),
terminals
.
step
,
leftTransp
.
step
,
sznpp
,
labels
.
ptr
<
Npp8u
>
(),
labels
.
step
,
buf
.
ptr
<
Npp8u
>
())
);
}
#endif
/* !defined (HAVE_CUDA) */
tests/gpu/src/morf_filters.cpp
浏览文件 @
60e572bb
...
...
@@ -133,7 +133,7 @@ public:
protected:
virtual
int
test
(
const
Mat
&
img
)
{
Mat
kernel
(
3
,
3
,
CV_8U
,
Scalar
(
1
));
GpuMat
kernel
(
Mat
::
ones
(
3
,
3
,
CV_8U
));
Point
anchor
(
1
,
1
);
int
iters
=
3
;
...
...
@@ -157,7 +157,7 @@ public:
protected:
virtual
int
test
(
const
Mat
&
img
)
{
Mat
kernel
(
3
,
3
,
CV_8U
,
Scalar
(
1
));
GpuMat
kernel
(
Mat
::
ones
(
3
,
3
,
CV_8U
));
Point
anchor
(
1
,
1
);
int
iters
=
3
;
...
...
@@ -185,7 +185,7 @@ protected:
const
char
*
names
[]
=
{
"MORPH_OPEN"
,
"CV_MOP_CLOSE"
,
"CV_MOP_GRADIENT"
,
"CV_MOP_TOPHAT"
,
"CV_MOP_BLACKHAT"
};
int
num
=
sizeof
(
ops
)
/
sizeof
(
ops
[
0
]);
Mat
kernel
(
3
,
3
,
CV_8U
,
Scalar
(
1
));
GpuMat
kernel
(
Mat
::
ones
(
3
,
3
,
CV_8U
));
Point
anchor
(
1
,
1
);
int
iters
=
3
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录