Я тренирую cascadeclassifier
и возникла странная проблема. Это произошло в tempStage->write( fs, Mat() );
в следующем коде.
CvCascadeBoost* tempStage = new CvCascadeBoost;
// save current stage
char buf[10];
sprintf(buf, "%s%d", "stage", i );
filename = dirName + buf + ".xml";
FileStorage fs( filename, FileStorage::WRITE );
if ( !fs.isOpened() )
{
cout << "Current stage can not be written, because file " << filename
<< " can not be opened." << endl;
return false;
}
fs << FileStorage::getDefaultObjectName(filename) << "{";
tempStage->write( fs, Mat() );
fs << "}";
Ошибка OpenCV
OpenCV Error: Unspecified error (No element name has been given) in unknown func
tion, file D:\Lib\OpenCV_Lib_2.4.6\include\opencv2/core/ope
rations.hpp, line 2908
Что может быть неправильным? Когда я проверяю fs, у него много неспособных читать сообщения памяти, как показано на прилагаемом рисунке.
благодаря
подпись CvCascadeBoost::write
:
void CvCascadeBoost::write( FileStorage &fs, const Mat& featureMap ) const
и вы передали ему пустую матрицу, что должно быть неправильно.
opencv_trainedclassifier.exe
поставляется с исходным кодом?
char buf[10]; sprintf(buf, "%s%d", "stage", i );
Если это целое число больше 5 цифр, вы переполните буфер.