Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
d23a4f50
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,发现更多精彩内容 >>
提交
d23a4f50
编写于
11月 28, 2012
作者:
M
marina.kolpakova
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add resize
上级
8ef19e76
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
44 addition
and
3 deletion
+44
-3
modules/gpu/src/cuda/icf-sc.cu
modules/gpu/src/cuda/icf-sc.cu
+35
-0
modules/gpu/src/softcascade.cpp
modules/gpu/src/softcascade.cpp
+9
-3
未找到文件。
modules/gpu/src/cuda/icf-sc.cu
浏览文件 @
d23a4f50
...
...
@@ -50,6 +50,41 @@
namespace
cv
{
namespace
gpu
{
namespace
device
{
namespace
icf
{
template
<
int
FACTOR
>
__device__
__forceinline__
uchar
shrink
(
const
uchar
*
ptr
,
const
int
pitch
,
const
int
y
,
const
int
x
)
{
int
out
=
0
;
#pragma unroll
for
(
int
dy
=
0
;
dy
<
FACTOR
;
++
dy
)
#pragma unroll
for
(
int
dx
=
0
;
dx
<
FACTOR
;
++
dx
)
{
out
+=
ptr
[
dy
*
pitch
+
dx
];
}
return
static_cast
<
uchar
>
(
out
/
(
FACTOR
*
FACTOR
));
}
template
<
int
FACTOR
>
__global__
void
shrink
(
const
uchar
*
__restrict__
hogluv
,
const
int
inPitch
,
uchar
*
__restrict__
shrank
,
const
int
outPitch
)
{
const
int
y
=
blockIdx
.
y
*
blockDim
.
y
+
threadIdx
.
y
;
const
int
x
=
blockIdx
.
x
*
blockDim
.
x
+
threadIdx
.
x
;
const
uchar
*
ptr
=
hogluv
+
(
FACTOR
*
y
)
*
inPitch
+
(
FACTOR
*
x
);
shrank
[
y
*
outPitch
+
x
]
=
shrink
<
FACTOR
>
(
ptr
,
inPitch
,
y
,
x
);
}
void
shrink
(
const
cv
::
gpu
::
PtrStepSzb
&
channels
,
cv
::
gpu
::
PtrStepSzb
shrunk
)
{
dim3
block
(
32
,
8
);
dim3
grid
(
shrunk
.
cols
/
32
,
shrunk
.
rows
/
8
);
shrink
<
4
><<<
grid
,
block
>>>
((
uchar
*
)
channels
.
ptr
(),
channels
.
step
,
(
uchar
*
)
shrunk
.
ptr
(),
shrunk
.
step
);
cudaSafeCall
(
cudaDeviceSynchronize
());
}
__device__
__forceinline__
void
luv
(
const
float
&
b
,
const
float
&
g
,
const
float
&
r
,
uchar
&
__l
,
uchar
&
__u
,
uchar
&
__v
)
{
// rgb -> XYZ
...
...
modules/gpu/src/softcascade.cpp
浏览文件 @
d23a4f50
...
...
@@ -96,6 +96,8 @@ namespace icf {
void
bgr2Luv
(
const
PtrStepSzb
&
bgr
,
PtrStepSzb
luv
);
void
gray2hog
(
const
PtrStepSzb
&
gray
,
PtrStepSzb
mag
,
const
int
bins
);
void
shrink
(
const
cv
::
gpu
::
PtrStepSzb
&
channels
,
cv
::
gpu
::
PtrStepSzb
shrunk
);
}
namespace
imgproc
{
...
...
@@ -669,13 +671,15 @@ struct SeparablePreprocessor : public cv::gpu::SCascade::Preprocessor
{
SeparablePreprocessor
(
const
int
s
,
const
int
b
)
:
cv
::
gpu
::
SCascade
::
Preprocessor
(),
shrinkage
(
s
),
bins
(
b
)
{}
virtual
void
apply
(
InputArray
_frame
,
OutputArray
_
channels
,
Stream
&
s
=
Stream
::
Null
())
virtual
void
apply
(
InputArray
_frame
,
OutputArray
_
shrunk
,
Stream
&
s
=
Stream
::
Null
())
{
const
GpuMat
frame
=
_frame
.
getGpuMat
();
cv
::
gpu
::
GaussianBlur
(
frame
,
bgr
,
cv
::
Size
(
3
,
3
),
-
1.0
);
_channels
.
create
(
frame
.
rows
*
(
4
+
bins
),
frame
.
cols
,
CV_8UC1
);
GpuMat
channels
=
_channels
.
getGpuMat
();
_shrunk
.
create
(
frame
.
rows
*
(
4
+
bins
)
/
shrinkage
,
frame
.
cols
/
shrinkage
,
CV_8UC1
);
GpuMat
shrunk
=
_shrunk
.
getGpuMat
();
channels
.
create
(
frame
.
rows
*
(
4
+
bins
),
frame
.
cols
,
CV_8UC1
);
setZero
(
channels
,
s
);
cv
::
gpu
::
cvtColor
(
bgr
,
gray
,
CV_BGR2GRAY
);
...
...
@@ -683,6 +687,7 @@ struct SeparablePreprocessor : public cv::gpu::SCascade::Preprocessor
cv
::
gpu
::
GpuMat
luv
(
channels
,
cv
::
Rect
(
0
,
bgr
.
rows
*
(
bins
+
1
),
bgr
.
cols
,
bgr
.
rows
*
3
));
cv
::
gpu
::
device
::
icf
::
bgr2Luv
(
bgr
,
luv
);
cv
::
gpu
::
device
::
icf
::
shrink
(
channels
,
shrunk
);
}
private:
...
...
@@ -691,6 +696,7 @@ private:
GpuMat
bgr
;
GpuMat
gray
;
GpuMat
channels
;
};
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录