Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv_contrib
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_contrib
Commits
48903ef9
Commit
48903ef9
authored
Apr 20, 2016
by
Maksim Shabunin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added python aliases for face predict overloaded functions
parent
46dd2631
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
66 additions
and
612 deletions
+66
-612
face.hpp
modules/face/include/opencv2/face.hpp
+2
-3
predict_collector.hpp
modules/face/include/opencv2/face/predict_collector.hpp
+0
-0
eigen_faces.cpp
modules/face/src/eigen_faces.cpp
+4
-4
facerec.cpp
modules/face/src/facerec.cpp
+4
-4
fisher_faces.cpp
modules/face/src/fisher_faces.cpp
+4
-4
lbph_faces.cpp
modules/face/src/lbph_faces.cpp
+4
-4
map_predict_collector.cpp
modules/face/src/map_predict_collector.cpp
+0
-87
mindist_predict_collector.cpp
modules/face/src/mindist_predict_collector.cpp
+0
-77
predict_collector.cpp
modules/face/src/predict_collector.cpp
+48
-93
stat_predict_collector.cpp
modules/face/src/stat_predict_collector.cpp
+0
-88
std_predict_collector.cpp
modules/face/src/std_predict_collector.cpp
+0
-66
topn_predict_collector.cpp
modules/face/src/topn_predict_collector.cpp
+0
-110
vector_predict_collector.cpp
modules/face/src/vector_predict_collector.cpp
+0
-72
No files found.
modules/face/include/opencv2/face.hpp
View file @
48903ef9
...
...
@@ -256,7 +256,7 @@ public:
CV_WRAP
virtual
void
update
(
InputArrayOfArrays
src
,
InputArray
labels
);
/** @overload */
CV_WRAP
int
predict
(
InputArray
src
)
const
;
CV_WRAP
_AS
(
predict_label
)
int
predict
(
InputArray
src
)
const
;
/** @brief Predicts a label and associated confidence (e.g. distance) for a given input image.
...
...
@@ -300,12 +300,11 @@ public:
/** @brief - if implemented - send all result of prediction to collector that can be used for somehow custom result handling
@param src Sample image to get a prediction from.
@param collector User-defined collector object that accepts all results
@param state - optional user-defined state token that should be passed back from FaceRecognizer implementation
To implement this method u just have to do same internal cycle as in predict(InputArray src, CV_OUT int &label, CV_OUT double &confidence) but
not try to get "best@ result, just resend it to caller side with given collector
*/
CV_WRAP
virtual
void
predict
(
InputArray
src
,
Ptr
<
PredictCollector
>
collector
,
const
int
state
=
0
)
const
=
0
;
CV_WRAP
_AS
(
predict_collect
)
virtual
void
predict
(
InputArray
src
,
Ptr
<
PredictCollector
>
collector
)
const
=
0
;
/** @brief Saves a FaceRecognizer and its model state.
...
...
modules/face/include/opencv2/face/predict_collector.hpp
View file @
48903ef9
This diff is collapsed.
Click to expand it.
modules/face/src/eigen_faces.cpp
View file @
48903ef9
...
...
@@ -42,7 +42,7 @@ public:
void
train
(
InputArrayOfArrays
src
,
InputArray
labels
);
// Send all predict results to caller side for custom result handling
void
predict
(
InputArray
src
,
Ptr
<
PredictCollector
>
collector
,
const
int
state
)
const
;
void
predict
(
InputArray
src
,
Ptr
<
PredictCollector
>
collector
)
const
;
};
//------------------------------------------------------------------------------
...
...
@@ -99,7 +99,7 @@ void Eigenfaces::train(InputArrayOfArrays _src, InputArray _local_labels) {
}
}
void
Eigenfaces
::
predict
(
InputArray
_src
,
Ptr
<
PredictCollector
>
collector
,
const
int
state
)
const
{
void
Eigenfaces
::
predict
(
InputArray
_src
,
Ptr
<
PredictCollector
>
collector
)
const
{
// get data
Mat
src
=
_src
.
getMat
();
// make sure the user is passing correct data
...
...
@@ -114,11 +114,11 @@ void Eigenfaces::predict(InputArray _src, Ptr<PredictCollector> collector, const
}
// project into PCA subspace
Mat
q
=
LDA
::
subspaceProject
(
_eigenvectors
,
_mean
,
src
.
reshape
(
1
,
1
));
collector
->
init
(
(
int
)
_projections
.
size
(),
state
);
collector
->
init
(
_projections
.
size
()
);
for
(
size_t
sampleIdx
=
0
;
sampleIdx
<
_projections
.
size
();
sampleIdx
++
)
{
double
dist
=
norm
(
_projections
[
sampleIdx
],
q
,
NORM_L2
);
int
label
=
_labels
.
at
<
int
>
((
int
)
sampleIdx
);
if
(
!
collector
->
collect
(
label
,
dist
,
state
))
return
;
if
(
!
collector
->
collect
(
label
,
dist
))
return
;
}
}
...
...
modules/face/src/facerec.cpp
View file @
48903ef9
...
...
@@ -80,10 +80,10 @@ int FaceRecognizer::predict(InputArray src) const {
}
void
FaceRecognizer
::
predict
(
InputArray
src
,
CV_OUT
int
&
label
,
CV_OUT
double
&
confidence
)
const
{
Ptr
<
MinDistancePredictCollector
>
collector
=
MinDistancePredict
Collector
::
create
(
getThreshold
());
predict
(
src
,
collector
,
0
);
label
=
collector
->
getLabel
();
confidence
=
collector
->
getDist
();
Ptr
<
StandardCollector
>
collector
=
Standard
Collector
::
create
(
getThreshold
());
predict
(
src
,
collector
);
label
=
collector
->
get
Min
Label
();
confidence
=
collector
->
get
Min
Dist
();
}
}
...
...
modules/face/src/fisher_faces.cpp
View file @
48903ef9
...
...
@@ -37,7 +37,7 @@ public:
void
train
(
InputArrayOfArrays
src
,
InputArray
labels
);
// Send all predict results to caller side for custom result handling
void
predict
(
InputArray
src
,
Ptr
<
PredictCollector
>
collector
,
const
int
state
)
const
;
void
predict
(
InputArray
src
,
Ptr
<
PredictCollector
>
collector
)
const
;
};
// Removes duplicate elements in a given vector.
...
...
@@ -120,7 +120,7 @@ void Fisherfaces::train(InputArrayOfArrays src, InputArray _lbls) {
}
}
void
Fisherfaces
::
predict
(
InputArray
_src
,
Ptr
<
PredictCollector
>
collector
,
const
int
state
)
const
{
void
Fisherfaces
::
predict
(
InputArray
_src
,
Ptr
<
PredictCollector
>
collector
)
const
{
Mat
src
=
_src
.
getMat
();
// check data alignment just for clearer exception messages
if
(
_projections
.
empty
())
{
...
...
@@ -134,11 +134,11 @@ void Fisherfaces::predict(InputArray _src, Ptr<PredictCollector> collector, cons
// project into LDA subspace
Mat
q
=
LDA
::
subspaceProject
(
_eigenvectors
,
_mean
,
src
.
reshape
(
1
,
1
));
// find 1-nearest neighbor
collector
->
init
((
int
)
_projections
.
size
()
,
state
);
collector
->
init
((
int
)
_projections
.
size
());
for
(
size_t
sampleIdx
=
0
;
sampleIdx
<
_projections
.
size
();
sampleIdx
++
)
{
double
dist
=
norm
(
_projections
[
sampleIdx
],
q
,
NORM_L2
);
int
label
=
_labels
.
at
<
int
>
((
int
)
sampleIdx
);
if
(
!
collector
->
collect
(
label
,
dist
,
state
))
return
;
if
(
!
collector
->
collect
(
label
,
dist
))
return
;
}
}
...
...
modules/face/src/lbph_faces.cpp
View file @
48903ef9
...
...
@@ -92,7 +92,7 @@ public:
void
update
(
InputArrayOfArrays
src
,
InputArray
labels
);
// Send all predict results to caller side for custom result handling
void
predict
(
InputArray
src
,
Ptr
<
PredictCollector
>
collector
,
const
int
state
=
0
)
const
;
void
predict
(
InputArray
src
,
Ptr
<
PredictCollector
>
collector
)
const
;
// See FaceRecognizer::load.
void
load
(
const
FileStorage
&
fs
);
...
...
@@ -383,7 +383,7 @@ void LBPH::train(InputArrayOfArrays _in_src, InputArray _in_labels, bool preserv
}
}
void
LBPH
::
predict
(
InputArray
_src
,
Ptr
<
PredictCollector
>
collector
,
const
int
state
)
const
{
void
LBPH
::
predict
(
InputArray
_src
,
Ptr
<
PredictCollector
>
collector
)
const
{
if
(
_histograms
.
empty
())
{
// throw error if no data (or simply return -1?)
String
error_message
=
"This LBPH model is not computed yet. Did you call the train method?"
;
...
...
@@ -399,11 +399,11 @@ void LBPH::predict(InputArray _src, Ptr<PredictCollector> collector, const int s
_grid_y
,
/* grid size y */
true
/* normed histograms */
);
// find 1-nearest neighbor
collector
->
init
((
int
)
_histograms
.
size
()
,
state
);
collector
->
init
((
int
)
_histograms
.
size
());
for
(
size_t
sampleIdx
=
0
;
sampleIdx
<
_histograms
.
size
();
sampleIdx
++
)
{
double
dist
=
compareHist
(
_histograms
[
sampleIdx
],
query
,
HISTCMP_CHISQR_ALT
);
int
label
=
_labels
.
at
<
int
>
((
int
)
sampleIdx
);
if
(
!
collector
->
collect
(
label
,
dist
,
state
))
return
;
if
(
!
collector
->
collect
(
label
,
dist
))
return
;
}
}
...
...
modules/face/src/map_predict_collector.cpp
deleted
100644 → 0
View file @
46dd2631
/*
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
(3-clause BSD License)
Copyright (C) 2000-2015, Intel Corporation, all rights reserved.
Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
Copyright (C) 2009-2015, NVIDIA Corporation, all rights reserved.
Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
Copyright (C) 2015, OpenCV Foundation, all rights reserved.
Copyright (C) 2015, Itseez 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:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the names of the copyright holders nor the names of the contributors
may 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 implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall copyright holders 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.
*/
#include "opencv2/face/predict_collector.hpp"
#include "opencv2/core/cvstd.hpp"
#include <iterator>
namespace
cv
{
namespace
face
{
CV_WRAP
bool
MapPredictCollector
::
emit
(
const
int
label
,
const
double
dist
,
const
int
state
)
{
((
void
)
state
);
//if already in index check which is closer
if
(
_idx
->
find
(
label
)
!=
_idx
->
end
())
{
double
current
=
(
*
_idx
)[
label
];
if
(
dist
<
current
)
{
(
*
_idx
)[
label
]
=
dist
;
}
}
else
{
(
*
_idx
)[
label
]
=
dist
;
}
return
true
;
}
Ptr
<
std
::
map
<
int
,
double
>
>
MapPredictCollector
::
getResult
()
{
return
_idx
;
}
CV_WRAP
std
::
vector
<
std
::
pair
<
int
,
double
>
>
MapPredictCollector
::
getResultVector
()
{
std
::
vector
<
std
::
pair
<
int
,
double
>
>
result
;
std
::
copy
(
_idx
->
begin
(),
_idx
->
end
(),
std
::
back_inserter
(
result
));
return
result
;
}
CV_WRAP
Ptr
<
MapPredictCollector
>
MapPredictCollector
::
create
(
double
threshold
)
{
return
Ptr
<
MapPredictCollector
>
(
new
MapPredictCollector
(
threshold
));
}
}
}
\ No newline at end of file
modules/face/src/mindist_predict_collector.cpp
deleted
100644 → 0
View file @
46dd2631
/*
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
(3-clause BSD License)
Copyright (C) 2000-2015, Intel Corporation, all rights reserved.
Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
Copyright (C) 2009-2015, NVIDIA Corporation, all rights reserved.
Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
Copyright (C) 2015, OpenCV Foundation, all rights reserved.
Copyright (C) 2015, Itseez 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:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the names of the copyright holders nor the names of the contributors
may 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 implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall copyright holders 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.
*/
#include "opencv2/face/predict_collector.hpp"
#include "opencv2/core/cvstd.hpp"
namespace
cv
{
namespace
face
{
bool
MinDistancePredictCollector
::
emit
(
const
int
label
,
const
double
dist
,
const
int
state
)
{
((
void
)
state
);
_label
=
label
;
_dist
=
dist
;
return
true
;
}
CV_WRAP
bool
MinDistancePredictCollector
::
filter
(
int
*
label
,
double
*
dist
,
const
int
state
)
{
((
void
)
label
);
((
void
)
state
);
return
*
dist
<
_dist
;
}
int
MinDistancePredictCollector
::
getLabel
()
const
{
return
_label
;
}
double
MinDistancePredictCollector
::
getDist
()
const
{
return
_dist
;
}
Ptr
<
MinDistancePredictCollector
>
MinDistancePredictCollector
::
create
(
double
threshold
)
{
return
Ptr
<
MinDistancePredictCollector
>
(
new
MinDistancePredictCollector
(
threshold
));
}
}
}
\ No newline at end of file
modules/face/src/predict_collector.cpp
View file @
48903ef9
...
...
@@ -42,117 +42,73 @@ 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.
*/
#include "opencv2/face/predict_collector.hpp"
#include "opencv2/core/cvstd.hpp"
namespace
cv
{
namespace
face
{
namespace
cv
{
namespace
face
{
void
PredictCollector
::
init
(
const
int
size
,
const
int
state
)
{
//reserve for some-how usage in descendants
_size
=
size
;
_state
=
state
;
static
std
::
pair
<
int
,
double
>
toPair
(
const
StandardCollector
::
PredictResult
&
val
)
{
return
std
::
make_pair
(
val
.
label
,
val
.
distance
);
}
CV_WRAP
bool
PredictCollector
::
defaultFilter
(
int
*
label
,
double
*
dist
,
const
int
state
)
{
// if state provided we should compare it with current state
if
(
_state
!=
0
&&
_state
!=
state
)
{
return
false
;
}
// if exclude label provided we can test it first
if
(
_excludeLabel
!=
0
&&
_excludeLabel
==
*
label
)
{
return
false
;
}
// initially we must recalculate distance by koef iv given
if
(
_distanceKoef
!=
1
)
{
*
dist
=
*
dist
*
_distanceKoef
;
}
// check upper threshold
if
(
*
dist
>
_threshold
)
{
return
false
;
}
//check inner threshold
if
(
*
dist
<
_minthreshold
)
{
return
false
;
}
return
true
;
static
bool
pairLess
(
const
std
::
pair
<
int
,
double
>
&
lhs
,
const
std
::
pair
<
int
,
double
>
&
rhs
)
{
return
lhs
.
second
<
rhs
.
second
;
}
CV_WRAP
bool
PredictCollector
::
filter
(
int
*
label
,
double
*
dist
,
const
int
state
)
{
((
void
)
label
);
((
void
)
dist
);
((
void
)
state
);
return
true
;
//no custom logic at base level
//===================================
StandardCollector
::
StandardCollector
(
double
threshold_
)
:
threshold
(
threshold_
)
{
init
(
0
);
}
bool
PredictCollector
::
emit
(
const
int
label
,
const
double
dist
,
const
int
state
)
{
((
void
)
label
);
((
void
)
dist
);
((
void
)
state
);
return
false
;
// terminate prediction - no any behavior in base PredictCollector
void
StandardCollector
::
init
(
size_t
size
)
{
minRes
=
PredictResult
();
data
.
clear
();
data
.
reserve
(
size
);
}
CV_WRAP
bool
PredictCollector
::
collect
(
int
label
,
double
dist
,
const
int
state
)
{
if
(
defaultFilter
(
&
label
,
&
dist
,
state
)
&&
filter
(
&
label
,
&
dist
,
state
))
{
return
emit
(
label
,
dist
,
state
);
bool
StandardCollector
::
collect
(
int
label
,
double
dist
)
{
if
(
dist
<
threshold
)
{
PredictResult
res
(
label
,
dist
);
if
(
res
.
distance
<
minRes
.
distance
)
minRes
=
res
;
data
.
push_back
(
res
);
}
return
true
;
}
CV_WRAP
int
PredictCollector
::
getSize
()
{
return
_size
;
int
StandardCollector
::
getMinLabel
()
const
{
return
minRes
.
label
;
}
CV_WRAP
void
PredictCollector
::
setSize
(
int
size
)
{
_size
=
size
;
double
StandardCollector
::
getMinDist
()
const
{
return
minRes
.
distance
;
}
CV_WRAP
int
PredictCollector
::
getState
()
{
return
_state
;
}
CV_WRAP
void
PredictCollector
::
setState
(
int
state
)
{
_state
=
state
;
}
CV_WRAP
int
PredictCollector
::
getExcludeLabel
()
{
return
_excludeLabel
;
}
CV_WRAP
void
PredictCollector
::
setExcludeLabel
(
int
excludeLabel
)
{
_excludeLabel
=
excludeLabel
;
}
CV_WRAP
double
PredictCollector
::
getDistanceKoef
()
{
return
_distanceKoef
;
}
CV_WRAP
void
PredictCollector
::
setDistanceKoef
(
double
distanceKoef
)
{
_distanceKoef
=
distanceKoef
;
}
CV_WRAP
double
PredictCollector
::
getMinThreshold
()
{
return
_minthreshold
;
std
::
vector
<
std
::
pair
<
int
,
double
>
>
StandardCollector
::
getResults
(
bool
sorted
)
const
{
std
::
vector
<
std
::
pair
<
int
,
double
>
>
res
(
data
.
size
());
std
::
transform
(
data
.
begin
(),
data
.
end
(),
res
.
begin
(),
&
toPair
);
if
(
sorted
)
{
std
::
sort
(
res
.
begin
(),
res
.
end
(),
&
pairLess
);
}
return
res
;
}
std
::
map
<
int
,
double
>
StandardCollector
::
getResultsMap
()
const
{
std
::
map
<
int
,
double
>
res
;
for
(
std
::
vector
<
PredictResult
>::
const_iterator
i
=
data
.
begin
();
i
!=
data
.
end
();
++
i
)
{
std
::
map
<
int
,
double
>::
iterator
j
=
res
.
find
(
i
->
label
);
if
(
j
==
res
.
end
())
{
res
.
insert
(
toPair
(
*
i
));
}
else
if
(
i
->
distance
<
j
->
second
)
{
j
->
second
=
i
->
distance
;
}
}
return
res
;
}
CV_WRAP
void
PredictCollector
::
setMinThreshold
(
double
minthreshold
)
{
_minthreshold
=
minthreshold
;
Ptr
<
StandardCollector
>
StandardCollector
::
create
(
double
threshold
)
{
return
makePtr
<
StandardCollector
>
(
threshold
);
}
}
}
\ No newline at end of file
}}
// cv::face::
modules/face/src/stat_predict_collector.cpp
deleted
100644 → 0
View file @
46dd2631
/*
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
(3-clause BSD License)
Copyright (C) 2000-2015, Intel Corporation, all rights reserved.
Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
Copyright (C) 2009-2015, NVIDIA Corporation, all rights reserved.
Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
Copyright (C) 2015, OpenCV Foundation, all rights reserved.
Copyright (C) 2015, Itseez 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:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the names of the copyright holders nor the names of the contributors
may 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 implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall copyright holders 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.
*/
#include "opencv2/face/predict_collector.hpp"
#include "opencv2/core/cvstd.hpp"
namespace
cv
{
namespace
face
{
CV_WRAP
bool
StatPredictCollector
::
emit
(
const
int
label
,
const
double
dist
,
const
int
state
)
{
((
void
)
state
);
((
void
)
label
);
_count
++
;
_sum
+=
dist
;
if
(
_min
>
dist
)
{
_min
=
dist
;
}
if
(
_max
<
dist
)
{
_max
=
dist
;
}
return
true
;
}
CV_WRAP
double
StatPredictCollector
::
getMin
()
{
return
_min
;
}
CV_WRAP
double
StatPredictCollector
::
getMax
()
{
return
_max
;
}
CV_WRAP
double
StatPredictCollector
::
getSum
()
{
return
_sum
;
}
CV_WRAP
int
StatPredictCollector
::
getCount
()
{
return
_count
;
}
CV_WRAP
Ptr
<
StatPredictCollector
>
StatPredictCollector
::
create
(
double
threshold
)
{
return
Ptr
<
StatPredictCollector
>
(
new
StatPredictCollector
(
threshold
));
}
}
}
\ No newline at end of file
modules/face/src/std_predict_collector.cpp
deleted
100644 → 0
View file @
46dd2631
/*
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
(3-clause BSD License)
Copyright (C) 2000-2015, Intel Corporation, all rights reserved.
Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
Copyright (C) 2009-2015, NVIDIA Corporation, all rights reserved.
Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
Copyright (C) 2015, OpenCV Foundation, all rights reserved.
Copyright (C) 2015, Itseez 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:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the names of the copyright holders nor the names of the contributors
may 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 implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall copyright holders 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.
*/
#include "opencv2/face/predict_collector.hpp"
#include "opencv2/core/cvstd.hpp"
namespace
cv
{
namespace
face
{
CV_WRAP
bool
StdPredictCollector
::
emit
(
const
int
label
,
const
double
dist
,
const
int
state
)
{
((
void
)
state
);
((
void
)
label
);
_s
+=
pow
(
dist
-
_avg
,
2
);
_n
++
;
return
true
;
}
CV_WRAP
double
StdPredictCollector
::
getResult
()
{
return
sqrt
(
_s
/
(
_n
-
1
));
}
CV_WRAP
Ptr
<
StdPredictCollector
>
StdPredictCollector
::
create
(
double
threshold
,
double
avg
)
{
return
Ptr
<
StdPredictCollector
>
(
new
StdPredictCollector
(
threshold
,
avg
));
}
}
}
\ No newline at end of file
modules/face/src/topn_predict_collector.cpp
deleted
100644 → 0
View file @
46dd2631
/*
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
(3-clause BSD License)
Copyright (C) 2000-2015, Intel Corporation, all rights reserved.
Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
Copyright (C) 2009-2015, NVIDIA Corporation, all rights reserved.
Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
Copyright (C) 2015, OpenCV Foundation, all rights reserved.
Copyright (C) 2015, Itseez 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:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the names of the copyright holders nor the names of the contributors
may 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 implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall copyright holders 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.
*/
#include "opencv2/face/predict_collector.hpp"
#include "opencv2/core/cvstd.hpp"
#include <iterator> // std::back_inserter
namespace
cv
{
namespace
face
{
CV_WRAP
bool
TopNPredictCollector
::
emit
(
const
int
label
,
const
double
dist
,
const
int
state
)
{
((
void
)
state
);
std
::
pair
<
int
,
double
>
p
=
std
::
make_pair
(
label
,
dist
);
if
(
_idx
->
size
()
==
0
||
p
.
second
<=
_idx
->
front
().
second
)
{
_idx
->
push_front
(
p
);
}
else
if
(
p
.
second
>=
_idx
->
back
().
second
)
{
_idx
->
push_back
(
p
);
}
else
{
typedef
std
::
list
<
std
::
pair
<
int
,
double
>
>::
iterator
it_type
;
for
(
it_type
i
=
_idx
->
begin
();
i
!=
_idx
->
end
();
i
++
)
{
if
(
p
.
second
<=
i
->
second
)
{
_idx
->
insert
(
i
,
p
);
break
;
}
}
}
return
true
;
}
CV_WRAP
bool
TopNPredictCollector
::
filter
(
int
*
label
,
double
*
dist
,
const
int
state
)
{
((
void
)
state
);
if
(
_idx
->
size
()
<
_size
)
return
true
;
//not full - can insert;
if
(
*
dist
>=
_idx
->
back
().
second
)
return
false
;
//too far distance
for
(
std
::
list
<
std
::
pair
<
int
,
double
>
>::
iterator
it
=
_idx
->
begin
();
it
!=
_idx
->
end
();
++
it
)
{
if
(
it
->
first
==
*
label
)
{
if
(
it
->
second
<=
*
dist
)
{
return
false
;
//has more close
}
else
{
_idx
->
erase
(
it
);
return
true
;
//no more require pop_back
}
}
}
_idx
->
pop_back
();
return
true
;
}
CV_WRAP
Ptr
<
std
::
list
<
std
::
pair
<
int
,
double
>
>
>
TopNPredictCollector
::
getResult
()
{
return
_idx
;
}
CV_WRAP
std
::
vector
<
std
::
pair
<
int
,
double
>
>
TopNPredictCollector
::
getResultVector
()
{
std
::
vector
<
std
::
pair
<
int
,
double
>
>
result
;
std
::
copy
(
_idx
->
begin
(),
_idx
->
end
(),
std
::
back_inserter
(
result
));
return
result
;
}
CV_WRAP
Ptr
<
TopNPredictCollector
>
TopNPredictCollector
::
create
(
size_t
size
,
double
threshold
)
{
return
Ptr
<
TopNPredictCollector
>
(
new
TopNPredictCollector
(
size
,
threshold
));
}
}
}
\ No newline at end of file
modules/face/src/vector_predict_collector.cpp
deleted
100644 → 0
View file @
46dd2631
/*
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
(3-clause BSD License)
Copyright (C) 2000-2015, Intel Corporation, all rights reserved.
Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
Copyright (C) 2009-2015, NVIDIA Corporation, all rights reserved.
Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
Copyright (C) 2015, OpenCV Foundation, all rights reserved.
Copyright (C) 2015, Itseez 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:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the names of the copyright holders nor the names of the contributors
may 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 implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall copyright holders 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.
*/
#include "opencv2/face/predict_collector.hpp"
#include "opencv2/core/cvstd.hpp"
namespace
cv
{
namespace
face
{
CV_WRAP
bool
VectorPredictCollector
::
emit
(
const
int
label
,
const
double
dist
,
const
int
state
)
{
((
void
)
state
);
_idx
->
push_back
(
std
::
pair
<
int
,
double
>
(
label
,
dist
));
return
true
;
}
Ptr
<
std
::
vector
<
std
::
pair
<
int
,
double
>
>
>
VectorPredictCollector
::
getResult
()
{
return
_idx
;
}
CV_WRAP
std
::
vector
<
std
::
pair
<
int
,
double
>
>
VectorPredictCollector
::
getResultVector
()
{
return
(
*
_idx
);
}
CV_WRAP
Ptr
<
VectorPredictCollector
>
VectorPredictCollector
::
create
(
double
threshold
)
{
return
Ptr
<
VectorPredictCollector
>
(
new
VectorPredictCollector
(
threshold
));
}
}
}
\ No newline at end of file
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