Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
e7f491ae
Commit
e7f491ae
authored
Dec 14, 2010
by
Kirill Kornyakov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CascadeClassifier refactored. Most of the members and methods are private now.
parent
e7cf541f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
89 additions
and
57 deletions
+89
-57
objdetect.hpp
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
+77
-45
cascadedetect.cpp
modules/objdetect/src/cascadedetect.cpp
+0
-0
boost.cpp
modules/traincascade/boost.cpp
+12
-12
No files found.
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
View file @
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
View file @
e7f491ae
This diff is collapsed.
Click to expand it.
modules/traincascade/boost.cpp
View file @
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
;
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment