Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
69582705
O
Opencv
项目概览
Greenplum
/
Opencv
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
69582705
编写于
9月 05, 2012
作者:
M
marina.kolpakova
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Integral images for ICF
上级
b0b85f36
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
86 addition
and
3 deletion
+86
-3
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
+1
-0
modules/objdetect/src/softcascade.cpp
modules/objdetect/src/softcascade.cpp
+85
-3
未找到文件。
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
浏览文件 @
69582705
...
...
@@ -507,6 +507,7 @@ public:
int
step
=
4
,
int
rejectfactor
=
1
);
protected:
virtual
void
detectInRoi
();
virtual
void
detectForOctave
(
int
octave
);
// virtual bool detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,
// int stripSize, int yStep, double factor, vector<Rect>& candidates,
...
...
modules/objdetect/src/softcascade.cpp
浏览文件 @
69582705
...
...
@@ -59,7 +59,7 @@ namespace {
Octave
(){}
Octave
(
const
cv
::
FileNode
&
fn
)
:
scale
((
float
)
fn
[
SC_OCT_SCALE
]),
stages
((
int
)
fn
[
SC_OCT_STAGES
])
{
printf
(
"octave: %f %d
\n
"
,
scale
,
stages
);
}
{
/*printf("octave: %f %d\n", scale, stages);*/
}
};
static
const
char
*
SC_STAGE_THRESHOLD
=
"stageThreshold"
;
...
...
@@ -72,7 +72,7 @@ namespace {
Stage
(){}
Stage
(
const
cv
::
FileNode
&
fn
)
:
threshold
((
float
)
fn
[
SC_STAGE_THRESHOLD
]),
weight
((
float
)
fn
[
SC_STAGE_WEIGHT
])
{
printf
(
" stage: %f %f
\n
"
,
threshold
,
weight
);
}
{
/*printf(" stage: %f %f\n",threshold, weight);*/
}
};
// according to R. Benenson, M. Mathias, R. Timofte and L. Van Gool paper
...
...
@@ -131,7 +131,8 @@ namespace {
cv
::
FileNode
rn
=
fn
[
SC_F_RECT
];
cv
::
FileNodeIterator
r_it
=
rn
.
begin
();
rect
=
cv
::
Rect
(
*
(
r_it
++
),
*
(
r_it
++
),
*
(
r_it
++
),
*
(
r_it
++
));
printf
(
" feature: %f %d %d [%d %d %d %d]
\n
"
,
threshold
,
direction
,
channel
,
rect
.
x
,
rect
.
y
,
rect
.
width
,
rect
.
height
);}
// printf(" feature: %f %d %d [%d %d %d %d]\n",threshold, direction, channel, rect.x, rect.y, rect.width, rect.height);
}
Feature
rescale
(
float
relScale
)
{
...
...
@@ -324,14 +325,95 @@ bool cv::SoftCascade::load( const string& filename, const float minScale, const
return
true
;
}
namespace
{
void
calcHistBins
(
const
cv
::
Mat
&
grey
,
std
::
vector
<
cv
::
Mat
>&
histInts
,
const
int
bins
)
{
CV_Assert
(
grey
.
type
()
==
CV_8U
);
const
int
rows
=
grey
.
rows
+
1
;
const
int
cols
=
grey
.
cols
+
1
;
cv
::
Size
intSumSize
(
cols
,
rows
);
histInts
.
clear
();
std
::
vector
<
cv
::
Mat
>
hist
;
for
(
int
bin
=
0
;
bin
<
bins
;
++
bin
)
{
hist
.
push_back
(
cv
::
Mat
(
rows
,
cols
,
CV_32FC1
));
}
cv
::
Mat
df_dx
,
df_dy
,
mag
,
angle
;
cv
::
Sobel
(
grey
,
df_dx
,
CV_32F
,
1
,
0
);
cv
::
Sobel
(
grey
,
df_dy
,
CV_32F
,
0
,
1
);
cv
::
cartToPolar
(
df_dx
,
df_dy
,
mag
,
angle
,
true
);
const
float
magnitudeScaling
=
1.0
/
sqrt
(
2
);
mag
*=
magnitudeScaling
;
angle
/=
60
;
for
(
int
h
=
0
;
h
<
mag
.
rows
;
++
h
)
{
float
*
magnitude
=
mag
.
ptr
<
float
>
(
h
);
float
*
ang
=
angle
.
ptr
<
float
>
(
h
);
for
(
int
w
=
0
;
w
<
mag
.
cols
;
++
w
)
{
hist
[(
int
)
ang
[
w
]].
ptr
<
float
>
(
h
)[
w
]
=
magnitude
[
w
];
}
}
for
(
int
bin
=
0
;
bin
<
bins
;
++
bin
)
{
cv
::
Mat
sum
;
cv
::
integral
(
hist
[
bin
],
sum
);
histInts
.
push_back
(
sum
);
}
cv
::
Mat
magIntegral
;
cv
::
integral
(
mag
,
magIntegral
,
mag
.
depth
());
}
struct
Integrals
{
/* data */
};
}
void
cv
::
SoftCascade
::
detectInRoi
()
{}
void
cv
::
SoftCascade
::
detectMultiScale
(
const
Mat
&
image
,
const
std
::
vector
<
cv
::
Rect
>&
rois
,
std
::
vector
<
cv
::
Rect
>&
objects
,
const
int
step
,
const
int
rejectfactor
)
{
typedef
std
::
vector
<
cv
::
Rect
>::
const_iterator
RIter_t
;
// only color images are supperted
CV_Assert
(
image
.
type
()
==
CV_8UC3
);
// only this window size allowed
CV_Assert
(
image
.
cols
==
640
&&
image
.
rows
==
480
);
objects
.
clear
();
// create integrals
cv
::
Mat
luv
;
cv
::
cvtColor
(
image
,
luv
,
CV_BGR2Luv
);
cv
::
Mat
luvIntegral
;
cv
::
integral
(
luv
,
luvIntegral
);
cv
::
Mat
grey
;
cv
::
cvtColor
(
image
,
grey
,
CV_RGB2GRAY
);
std
::
vector
<
cv
::
Mat
>
hist
;
const
int
bins
=
6
;
calcHistBins
(
grey
,
hist
,
bins
);
for
(
RIter_t
it
=
rois
.
begin
();
it
!=
rois
.
end
();
++
it
)
{
const
cv
::
Rect
&
roi
=
*
it
;
// detectInRoi(roi, objects, step);
}
}
void
cv
::
SoftCascade
::
detectForOctave
(
const
int
octave
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录