1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-28 23:03:03 +04:00

ml: refactor non-virtual methods

This commit is contained in:
berak
2018-04-24 12:11:59 +02:00
parent 4d7d630e92
commit fc5bba66af
4 changed files with 39 additions and 76 deletions
+28 -31
View File
@@ -50,13 +50,6 @@ static const int VAR_MISSED = VAR_ORDERED;
TrainData::~TrainData() {}
Mat TrainData::getTestSamples() const
{
Mat idx = getTestSampleIdx();
Mat samples = getSamples();
return idx.empty() ? Mat() : getSubVector(samples, idx);
}
Mat TrainData::getSubVector(const Mat& vec, const Mat& idx)
{
if( idx.empty() )
@@ -119,6 +112,7 @@ Mat TrainData::getSubVector(const Mat& vec, const Mat& idx)
return subvec;
}
class TrainDataImpl CV_FINAL : public TrainData
{
public:
@@ -155,6 +149,12 @@ public:
return layout == ROW_SAMPLE ? samples.cols : samples.rows;
}
Mat getTestSamples() const CV_OVERRIDE
{
Mat idx = getTestSampleIdx();
return idx.empty() ? Mat() : getSubVector(samples, idx);
}
Mat getSamples() const CV_OVERRIDE { return samples; }
Mat getResponses() const CV_OVERRIDE { return responses; }
Mat getMissing() const CV_OVERRIDE { return missing; }
@@ -987,6 +987,27 @@ public:
}
}
void getNames(std::vector<String>& names) const CV_OVERRIDE
{
size_t n = nameMap.size();
TrainDataImpl::MapType::const_iterator it = nameMap.begin(),
it_end = nameMap.end();
names.resize(n+1);
names[0] = "?";
for( ; it != it_end; ++it )
{
String s = it->first;
int label = it->second;
CV_Assert( label > 0 && label <= (int)n );
names[label] = s;
}
}
Mat getVarSymbolFlags() const CV_OVERRIDE
{
return varSymbolFlags;
}
FILE* file;
int layout;
Mat samples, missing, varType, varIdx, varSymbolFlags, responses, missingSubst;
@@ -996,30 +1017,6 @@ public:
MapType nameMap;
};
void TrainData::getNames(std::vector<String>& names) const
{
const TrainDataImpl* impl = dynamic_cast<const TrainDataImpl*>(this);
CV_Assert(impl != 0);
size_t n = impl->nameMap.size();
TrainDataImpl::MapType::const_iterator it = impl->nameMap.begin(),
it_end = impl->nameMap.end();
names.resize(n+1);
names[0] = "?";
for( ; it != it_end; ++it )
{
String s = it->first;
int label = it->second;
CV_Assert( label > 0 && label <= (int)n );
names[label] = s;
}
}
Mat TrainData::getVarSymbolFlags() const
{
const TrainDataImpl* impl = dynamic_cast<const TrainDataImpl*>(this);
CV_Assert(impl != 0);
return impl->varSymbolFlags;
}
Ptr<TrainData> TrainData::loadFromCSV(const String& filename,
int headerLines,