Ich schreibe einen Code für die SVM-Erkennung mit Opencv. Actualy, für die Trainingsdaten, ich habe zwei Matrix (positive und negative Merkmale) Erzeugen von:Operationen mit Vektoren und XML-Datei für SVM auf C++
const size_t N=12;
std::vector<std::array<int,N>> matrixForTrainingDataPos;
std::vector<std::array<int,N>> matrixForTrainingDataNeg;
für jedes Bild mit Merkmalen 12 gefüllt. Ich habe 100 positive Bilder und 140 negative Bilder und dann ist MatrixForTrainingDataPos [100] [12] und MatrixForTrainingDataNeg [140] [12]. Jetzt muß ich verketten, sie zu erhalten:
float trainingData[240][12] = {--------};
Mat trainingDataMat(240, 12, CV_32FC1, trainingData);
ich mit einigem Betrieb als pusk_back versucht, aber ich war nicht erfolgreich. Es ist mir jedoch gelungen, ein Array von 240 Elementen für die Markierung zu erstellen: 100 mit 1 und 140 mit -1 mit zwei für cicle. Der nächste Schritt ist ein TrainingData in XML-Datei zu speichern, so dass das Programm gestartet wird, wenn es keine Datei erstellt, vermeiden Sie die gesamte Verarbeitung von TrainingData, wenn Sie bereits gemacht haben können Sie mir helfen? Tanks!
Können Sie zeigen, wie Sie versucht haben, die Vektoren in das Array zu kopieren und welche Probleme/Fehler Sie damit hatten? – NathanOliver
ich habe 'std :: array findFeatures (Std :: Vektor Segmente) verwendet; Std :: Vektor Segmente = findBuildings (Bild); Std :: Array gefunden = findFeatures (Segmente); matrixForTrainingDataNeg.push_back (found); 'Derselbe Code für matrixForTrainingDataPos. –