add two types of feature boxes support:
- (left, top, width, height) - (left, top, right, bottom)
This commit is contained in:
parent
f7921b5ab3
commit
0a40bbd0d0
@ -88,7 +88,7 @@ struct Node
|
|||||||
struct Feature
|
struct Feature
|
||||||
{
|
{
|
||||||
Feature() {}
|
Feature() {}
|
||||||
Feature(const cv::FileNode& fn) : channel((int)fn[SC_F_CHANNEL])
|
Feature(const cv::FileNode& fn, bool useBoxes = false) : channel((int)fn[SC_F_CHANNEL])
|
||||||
{
|
{
|
||||||
cv::FileNode rn = fn[SC_F_RECT];
|
cv::FileNode rn = fn[SC_F_RECT];
|
||||||
cv::FileNodeIterator r_it = rn.begin();
|
cv::FileNodeIterator r_it = rn.begin();
|
||||||
@ -99,7 +99,10 @@ struct Feature
|
|||||||
int h = *r_it++;
|
int h = *r_it++;
|
||||||
|
|
||||||
// ToDo: fix me
|
// ToDo: fix me
|
||||||
rect = cv::Rect(x, y, w + x, h + y);
|
if (useBoxes)
|
||||||
|
rect = cv::Rect(x, y, w, h);
|
||||||
|
else
|
||||||
|
rect = cv::Rect(x, y, w + x, h + x);
|
||||||
|
|
||||||
// 1 / area
|
// 1 / area
|
||||||
rarea = 1.f / ((rect.width - rect.x) * (rect.height - rect.y));
|
rarea = 1.f / ((rect.width - rect.x) * (rect.height - rect.y));
|
||||||
@ -353,10 +356,15 @@ struct cv::SCascade::Fields
|
|||||||
|
|
||||||
static const char *const SC_SHRINKAGE = "shrinkage";
|
static const char *const SC_SHRINKAGE = "shrinkage";
|
||||||
|
|
||||||
|
static const char *const FEATURE_FORMAT = "featureFormat";
|
||||||
|
|
||||||
// only Ada Boost supported
|
// only Ada Boost supported
|
||||||
std::string stageTypeStr = (string)root[SC_STAGE_TYPE];
|
std::string stageTypeStr = (string)root[SC_STAGE_TYPE];
|
||||||
CV_Assert(stageTypeStr == SC_BOOST);
|
CV_Assert(stageTypeStr == SC_BOOST);
|
||||||
|
|
||||||
|
std::string fformat = (string)root[FEATURE_FORMAT];
|
||||||
|
bool useBoxes = (fformat == "BOX");
|
||||||
|
|
||||||
// only HOG-like integral channel features cupported
|
// only HOG-like integral channel features cupported
|
||||||
string featureTypeStr = (string)root[SC_FEATURE_TYPE];
|
string featureTypeStr = (string)root[SC_FEATURE_TYPE];
|
||||||
CV_Assert(featureTypeStr == SC_ICF);
|
CV_Assert(featureTypeStr == SC_ICF);
|
||||||
@ -403,7 +411,7 @@ struct cv::SCascade::Fields
|
|||||||
|
|
||||||
st = ffs.begin(), st_end = ffs.end();
|
st = ffs.begin(), st_end = ffs.end();
|
||||||
for (; st != st_end; ++st )
|
for (; st != st_end; ++st )
|
||||||
features.push_back(Feature(*st));
|
features.push_back(Feature(*st, useBoxes));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user