Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
e7f491ae
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,发现更多精彩内容 >>
提交
e7f491ae
编写于
12月 14, 2010
作者:
K
Kirill Kornyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
CascadeClassifier refactored. Most of the members and methods are private now.
上级
e7cf541f
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
238 addition
and
180 deletion
+238
-180
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
+77
-45
modules/objdetect/src/cascadedetect.cpp
modules/objdetect/src/cascadedetect.cpp
+149
-123
modules/traincascade/boost.cpp
modules/traincascade/boost.cpp
+12
-12
未找到文件。
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
浏览文件 @
e7f491ae
...
...
@@ -278,6 +278,7 @@ class CV_EXPORTS FeatureEvaluator
public:
enum
{
HAAR
=
0
,
LBP
=
1
};
virtual
~
FeatureEvaluator
();
virtual
bool
read
(
const
FileNode
&
node
);
virtual
Ptr
<
FeatureEvaluator
>
clone
()
const
;
virtual
int
getFeatureType
()
const
;
...
...
@@ -296,65 +297,96 @@ template<> CV_EXPORTS void Ptr<CvHaarClassifierCascade>::delete_obj();
class
CV_EXPORTS_W
CascadeClassifier
{
public:
struct
CV_EXPORTS
DTreeNode
{
int
featureIdx
;
float
threshold
;
// for ordered features only
int
left
;
int
right
;
};
struct
CV_EXPORTS
DTree
{
int
nodeCount
;
};
struct
CV_EXPORTS
Stage
{
int
first
;
int
ntrees
;
float
threshold
;
};
enum
{
BOOST
=
0
};
enum
{
DO_CANNY_PRUNING
=
1
,
SCALE_IMAGE
=
2
,
FIND_BIGGEST_OBJECT
=
4
,
DO_ROUGH_SEARCH
=
8
};
CV_WRAP
CascadeClassifier
();
CV_WRAP
CascadeClassifier
(
const
string
&
filename
);
~
CascadeClassifier
();
CV_WRAP
CascadeClassifier
(
const
string
&
filename
);
virtual
~
CascadeClassifier
();
CV_WRAP
bool
empty
()
const
;
CV_WRAP
bool
load
(
const
string
&
filename
);
bool
read
(
const
FileNode
&
node
);
CV_WRAP
virtual
bool
empty
()
const
;
CV_WRAP
bool
load
(
const
string
&
filename
);
bool
read
(
const
FileNode
&
node
);
CV_WRAP
void
detectMultiScale
(
const
Mat
&
image
,
CV_OUT
vector
<
Rect
>&
objects
,
double
scaleFactor
=
1.1
,
int
minNeighbors
=
3
,
int
flags
=
0
,
Size
minSize
=
Size
(),
Size
maxSize
=
Size
());
Size
maxSize
=
Size
()
);
bool
isOldFormatCascade
()
const
;
virtual
Size
getOriginalWindowSize
()
const
;
int
getFeatureType
()
const
;
bool
setImage
(
const
Mat
&
);
protected:
virtual
bool
detectSingleScale
(
const
Mat
&
image
,
int
stripCount
,
Size
processingRectSize
,
int
stripSize
,
int
yStep
,
double
factor
,
vector
<
Rect
>&
candidates
);
private:
enum
{
BOOST
=
0
};
enum
{
DO_CANNY_PRUNING
=
1
,
SCALE_IMAGE
=
2
,
FIND_BIGGEST_OBJECT
=
4
,
DO_ROUGH_SEARCH
=
8
};
friend
class
CascadeClassifierInvoker
;
template
<
class
FEval
>
friend
int
predictOrdered
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
);
template
<
class
FEval
>
friend
int
predictCategorical
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
);
template
<
class
FEval
>
friend
int
predictOrderedStump
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
);
template
<
class
FEval
>
friend
int
predictCategoricalStump
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
);
bool
setImage
(
Ptr
<
FeatureEvaluator
>&
,
const
Mat
&
);
int
runAt
(
Ptr
<
FeatureEvaluator
>&
,
Point
);
bool
isStumpBased
;
int
stageType
;
int
featureType
;
int
ncategories
;
Size
origWinSize
;
vector
<
Stage
>
stages
;
vector
<
DTree
>
classifiers
;
vector
<
DTreeNode
>
nodes
;
vector
<
float
>
leaves
;
vector
<
int
>
subsets
;
class
Data
{
public:
struct
CV_EXPORTS
DTreeNode
{
int
featureIdx
;
float
threshold
;
// for ordered features only
int
left
;
int
right
;
};
struct
CV_EXPORTS
DTree
{
int
nodeCount
;
};
struct
CV_EXPORTS
Stage
{
int
first
;
int
ntrees
;
float
threshold
;
};
bool
read
(
const
FileNode
&
node
);
bool
isStumpBased
;
int
stageType
;
int
featureType
;
int
ncategories
;
Size
origWinSize
;
vector
<
Stage
>
stages
;
vector
<
DTree
>
classifiers
;
vector
<
DTreeNode
>
nodes
;
vector
<
float
>
leaves
;
vector
<
int
>
subsets
;
};
Ptr
<
FeatureEvaluator
>
feval
;
Data
data
;
Ptr
<
FeatureEvaluator
>
featureEvaluator
;
Ptr
<
CvHaarClassifierCascade
>
oldCascade
;
};
//////////////// HOG (Histogram-of-Oriented-Gradients) Descriptor and Object Detector //////////////
struct
CV_EXPORTS_W
HOGDescriptor
...
...
modules/objdetect/src/cascadedetect.cpp
浏览文件 @
e7f491ae
此差异已折叠。
点击以展开。
modules/traincascade/boost.cpp
浏览文件 @
e7f491ae
...
...
@@ -474,9 +474,9 @@ float CvCascadeBoostTrainData::getVarValue( int vi, int si )
struct
FeatureIdxOnlyPrecalc
{
FeatureIdxOnlyPrecalc
(
const
CvFeatureEvaluator
*
_fe
val
,
CvMat
*
_buf
,
int
_sample_count
,
bool
_is_buf_16u
)
FeatureIdxOnlyPrecalc
(
const
CvFeatureEvaluator
*
_fe
atureEvaluator
,
CvMat
*
_buf
,
int
_sample_count
,
bool
_is_buf_16u
)
{
fe
val
=
_feval
;
fe
atureEvaluator
=
_featureEvaluator
;
sample_count
=
_sample_count
;
udst
=
(
unsigned
short
*
)
_buf
->
data
.
s
;
idst
=
_buf
->
data
.
i
;
...
...
@@ -490,7 +490,7 @@ struct FeatureIdxOnlyPrecalc
{
for
(
int
si
=
0
;
si
<
sample_count
;
si
++
)
{
valCachePtr
[
si
]
=
(
*
fe
val
)(
fi
,
si
);
valCachePtr
[
si
]
=
(
*
fe
atureEvaluator
)(
fi
,
si
);
if
(
is_buf_16u
)
*
(
udst
+
fi
*
sample_count
+
si
)
=
(
unsigned
short
)
si
;
else
...
...
@@ -502,7 +502,7 @@ struct FeatureIdxOnlyPrecalc
icvSortIntAux
(
idst
+
fi
*
sample_count
,
sample_count
,
valCachePtr
);
}
}
const
CvFeatureEvaluator
*
fe
val
;
const
CvFeatureEvaluator
*
fe
atureEvaluator
;
int
sample_count
;
int
*
idst
;
unsigned
short
*
udst
;
...
...
@@ -511,9 +511,9 @@ struct FeatureIdxOnlyPrecalc
struct
FeatureValAndIdxPrecalc
{
FeatureValAndIdxPrecalc
(
const
CvFeatureEvaluator
*
_fe
val
,
CvMat
*
_buf
,
Mat
*
_valCache
,
int
_sample_count
,
bool
_is_buf_16u
)
FeatureValAndIdxPrecalc
(
const
CvFeatureEvaluator
*
_fe
atureEvaluator
,
CvMat
*
_buf
,
Mat
*
_valCache
,
int
_sample_count
,
bool
_is_buf_16u
)
{
fe
val
=
_feval
;
fe
atureEvaluator
=
_featureEvaluator
;
valCache
=
_valCache
;
sample_count
=
_sample_count
;
udst
=
(
unsigned
short
*
)
_buf
->
data
.
s
;
...
...
@@ -526,7 +526,7 @@ struct FeatureValAndIdxPrecalc
{
for
(
int
si
=
0
;
si
<
sample_count
;
si
++
)
{
valCache
->
at
<
float
>
(
fi
,
si
)
=
(
*
fe
val
)(
fi
,
si
);
valCache
->
at
<
float
>
(
fi
,
si
)
=
(
*
fe
atureEvaluator
)(
fi
,
si
);
if
(
is_buf_16u
)
*
(
udst
+
fi
*
sample_count
+
si
)
=
(
unsigned
short
)
si
;
else
...
...
@@ -538,7 +538,7 @@ struct FeatureValAndIdxPrecalc
icvSortIntAux
(
idst
+
fi
*
sample_count
,
sample_count
,
valCache
->
ptr
<
float
>
(
fi
)
);
}
}
const
CvFeatureEvaluator
*
fe
val
;
const
CvFeatureEvaluator
*
fe
atureEvaluator
;
Mat
*
valCache
;
int
sample_count
;
int
*
idst
;
...
...
@@ -548,9 +548,9 @@ struct FeatureValAndIdxPrecalc
struct
FeatureValOnlyPrecalc
{
FeatureValOnlyPrecalc
(
const
CvFeatureEvaluator
*
_fe
val
,
Mat
*
_valCache
,
int
_sample_count
)
FeatureValOnlyPrecalc
(
const
CvFeatureEvaluator
*
_fe
atureEvaluator
,
Mat
*
_valCache
,
int
_sample_count
)
{
fe
val
=
_feval
;
fe
atureEvaluator
=
_featureEvaluator
;
valCache
=
_valCache
;
sample_count
=
_sample_count
;
}
...
...
@@ -558,9 +558,9 @@ struct FeatureValOnlyPrecalc
{
for
(
int
fi
=
range
.
begin
();
fi
<
range
.
end
();
fi
++
)
for
(
int
si
=
0
;
si
<
sample_count
;
si
++
)
valCache
->
at
<
float
>
(
fi
,
si
)
=
(
*
fe
val
)(
fi
,
si
);
valCache
->
at
<
float
>
(
fi
,
si
)
=
(
*
fe
atureEvaluator
)(
fi
,
si
);
}
const
CvFeatureEvaluator
*
fe
val
;
const
CvFeatureEvaluator
*
fe
atureEvaluator
;
Mat
*
valCache
;
int
sample_count
;
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录