SVM Memory Exception
Hello, I'm working on SVM train model for more than 2 classes. I was storing the result of predict in a mat variable and was getting same output for any sample i test for. I made some changes in the dataset, now im getting a memory exception. Please help me, i'm new to opencv.
No of classes : 5 Size : Trained Data set (row x col) Class 1 : 76636 Class 2 : 323636 Class 3 : 8633*36 Class 4 : 5499 * 36 Class 5 : 8010 * 36
Labels : Class 1 : 1 Class 2 : 2 Class 3 : 3 Class 4 : 4 Class 5 : 5
My Code :
#include<opencv\cv.h>
#include<opencv\highgui.h>
#include<stdio.h>
#include <iostream>
#include<string>
#include <fstream>
#include<stdlib.h>
//#include <stdafx.h>
#include <windows.h>
#include <tchar.h>
#include <sstream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ml/ml.hpp>
using namespace cv;
using namespace std;
Mat x[100];
int j;
// Dataset is imported
void importData()
{
j=0;
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
TCHAR *directory = TEXT("C:\\Users\\User\\Documents\\Visual Studio 2010\\Projects\\output");
TCHAR patter[MAX_PATH];
TCHAR fileName[MAX_PATH];
memset(patter, 0x00, MAX_PATH);
_stprintf(patter, TEXT("%s\\*.txt"), directory);
hFind = FindFirstFile(patter, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("FindFirstFile failed (%d)\n", GetLastError());
}
else
{
do
{
//ignore current and parent directories
if(_tcscmp(FindFileData.cFileName, TEXT("."))==0 || _tcscmp(FindFileData.cFileName, TEXT(".."))==0)
continue;
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
//ignore directories
}
else
{
//list the Files
_tprintf (TEXT("%s\n"),
FindFileData.cFileName);
memset(fileName, 0x00, sizeof(fileName));
_stprintf(fileName, TEXT("%s\\%s"), directory, FindFileData.cFileName);
// FILE *fptr = fopen(fileName, "r");
//do here whatever you want to do..
//fclose(fptr);
FileStorage fs;
string pa(fileName);
// cout<<pa;
fs.open(pa,FileStorage::READ);
pa=pa.substr(pa.find_last_of("/\\")+1);
pa=pa.substr(0,pa.find_last_of("."));
// cout<<" >> " << pa << "\n" ;
fs["output"+pa] >> x[j] ;
//cout<<pa<<":"<<x[j].rows << "x" << x[j].cols <<"\n";
fs.release();
j++;
}
}while (FindNextFile(hFind, &FindFileData));
FindClose(hFind);
}
}
// Main function which handles all functions
int main(int argc, char** argv[])
{
importData();
int i=0,k=0;
/*//
Mat R = Mat_<double>::zeros(3, 3);
cout<<R;
FileStorage fs;
fs.open("new.txt",FileStorage::WRITE);
fs<<"new" << R;
fs.release();
fs.open("new.txt",FileStorage::READ);
fs["new"]>>x[0];
*/
Mat n[10],z[10];
int l=0;
while(l<5)
{
if(i%10==0)
{
x[i].copyTo(n[l]);
}
else if(i%10==1)
{
x[i].copyTo(z[k]);
}
else if(i%2==0)
{
vconcat(n[l],x[i],n[l]);
// cout<<"row:"<<n[l].rows<<"\n";
}
else
{
vconcat(z[k],x[i],z[k]);
// cout<<"row:"<<n[l].rows<<"\n";
}
i++;
// Increment the class
if(i%10==0)
{
l++;
k++;
}
}
// cout<<n[0].rows << " x " << n[0].cols << "\n";
// cout<<n[1].rows << " x " << n[1].cols;
Mat m[10];
for(int r =0; r<l;r++)
{
Mat A(n[r].rows, 1, DataType<float>::type);
for(int s=0;s<n[r].rows;s++)
{
A.at<float>(s,0)=r ...