// Deserializes this object from a given cv::FileStorage.
virtual void load(const FileStorage& fs) = 0;
+
+ // Sets additional information as pairs label - info.
+ virtual void setLabelsInfo(const std::map<int, string>& labelsInfo) = 0;
+
+ // Gets string information by label
+ virtual string getLabelInfo(int label) const = 0;
+
+ // Gets labels by string
+ virtual vector<int> getLabelsByString(const string& str) = 0;
};
* **Loading/Saving** the model state from/to a given XML or YAML.
+* **Setting/Getting labels info**, that is storaged as a string.
+
.. note:: When using the FaceRecognizer interface in combination with Python, please stick to Python 2. Some underlying scripts like create_csv will not work in other versions, like Python 3.
Setting the Thresholds
turn gets called by ``FaceRecognizer::load(const string& filename)``, to ease
saving a model.
+FaceRecognizer::setLabelsInfo
+-----------------------------
+
+Sets string information about labels into the model.
+.. ocv:function:: void FaceRecognizer::setLabelsInfo(const std::map<int, string>& labelsInfo) = 0
+
+Information about the label loads as a pair label-its info.
+
+FaceRecognizer::getLabelInfo
+----------------------------
+
+Gets string information by label.
+.. ocv:function:: string FaceRecognizer::getLabelInfo(int label) const = 0
+
+If there is no such label in the model or there is no information about the label it will return an empty string.
+
+FaceRecognizer::getLabelsByString
+---------------------------------
+Gets vector of labels by string.
+
+.. ocv:function:: vector<int> FaceRecognizer::getLabelsByString(const string& str) = 0
+
+If the string contained in a string information for a label, this label will be pushed into the vector.
+
createEigenFaceRecognizer
-------------------------
* ``mean`` The sample mean calculated from the training data.
* ``projections`` The projections of the training data.
* ``labels`` The threshold applied in the prediction. If the distance to the nearest neighbor is larger than the threshold, this method returns -1.
+* ``labelsInfo`` The string information about the labels.
createFisherFaceRecognizer
--------------------------
* ``mean`` The sample mean calculated from the training data.
* ``projections`` The projections of the training data.
* ``labels`` The labels corresponding to the projections.
+* ``labelsInfo`` The string information about the labels.
createLBPHFaceRecognizer
* ``threshold`` see :ocv:func:`createLBPHFaceRecognizer`.
* ``histograms`` Local Binary Patterns Histograms calculated from the given training data (empty if none was given).
* ``labels`` Labels corresponding to the calculated Local Binary Patterns Histograms.
+* ``labelsInfo`` The string information about the labels.
// See FaceRecognizer::save.
void save(FileStorage& fs) const;
- // Sets additions information as pairs label - info.
+ // Sets additional information as pairs label - info.
void setLabelsInfo(const std::map<int,string>& labelsInfo);
- // Gets additional information by label
+ // Gets string information by label
string getLabelInfo(int label) const;
// Gets labels by string
// See FaceRecognizer::save.
void save(FileStorage& fs) const;
- // Sets additions information as pairs label - info.
+ // Sets additional information as pairs label - info.
void setLabelsInfo(const std::map<int,string>& labelsInfo);
- // Gets additional information by label
+ // Gets string information by label
string getLabelInfo(int label) const;
// Gets labels by string
// See FaceRecognizer::save.
void save(FileStorage& fs) const;
- // Sets additions information as pairs label - info.
+ // Sets additional information as pairs label - info.
void setLabelsInfo(const std::map<int,string>& labelsInfo);
- // Gets additional information by label
+ // Gets string information by label
string getLabelInfo(int label) const;
// Gets labels by string
// read sequences
readFileNodeList(fs["projections"], _projections);
fs["labels"] >> _labels;
- const FileNode& fn = fs["info"];
+ const FileNode& fn = fs["labelsInfo"];
if (fn.type() == FileNode::SEQ)
{
_labelsInfo.clear();
// write sequences
writeFileNodeList(fs, "projections", _projections);
fs << "labels" << _labels;
- fs << "info" << "[";
+ fs << "labelsInfo" << "[";
for (std::map<int, string>::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++)
fs << LabelInfo(it->first, it->second);
fs << "]";
string Eigenfaces::getLabelInfo(int label) const
{
- if(_labelsInfo.count(label) > 0)
- return _labelsInfo.at(label);
- return "";
+ std::map<int, string>::const_iterator iter(_labelsInfo.find(label));
+ return iter != _labelsInfo.end() ? iter->second : "";
}
vector<int> Eigenfaces::getLabelsByString(const string& str)
// read sequences
readFileNodeList(fs["projections"], _projections);
fs["labels"] >> _labels;
- const FileNode& fn = fs["info"];
+ const FileNode& fn = fs["labelsInfo"];
if (fn.type() == FileNode::SEQ)
{
_labelsInfo.clear();
// write sequences
writeFileNodeList(fs, "projections", _projections);
fs << "labels" << _labels;
- fs << "info" << "[";
+ fs << "labelsInfo" << "[";
for (std::map<int, string>::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++)
fs << LabelInfo(it->first, it->second);
fs << "]";
string Fisherfaces::getLabelInfo(int label) const
{
- if(_labelsInfo.count(label) > 0)
- return _labelsInfo.at(label);
- return "";
+ std::map<int, string>::const_iterator iter(_labelsInfo.find(label));
+ return iter != _labelsInfo.end() ? iter->second : "";
}
vector<int> Fisherfaces::getLabelsByString(const string& str)
//read matrices
readFileNodeList(fs["histograms"], _histograms);
fs["labels"] >> _labels;
- const FileNode& fn = fs["info"];
+ const FileNode& fn = fs["labelsInfo"];
if (fn.type() == FileNode::SEQ)
{
_labelsInfo.clear();
// write matrices
writeFileNodeList(fs, "histograms", _histograms);
fs << "labels" << _labels;
- fs << "info" << "[";
+ fs << "labelsInfo" << "[";
for (std::map<int, string>::const_iterator it = _labelsInfo.begin(); it != _labelsInfo.end(); it++)
fs << LabelInfo(it->first, it->second);
fs << "]";
string LBPH::getLabelInfo(int label) const
{
- if(_labelsInfo.count(label) > 0)
- return _labelsInfo.at(label);
- return "";
+ std::map<int, string>::const_iterator iter(_labelsInfo.find(label));
+ return iter != _labelsInfo.end() ? iter->second : "";
}
vector<int> LBPH::getLabelsByString(const string& str)