To test SVM trained data is whether reliable or not. (example source code)
After training SVM, we should test the trained XML data is reliable or not..
The method to extract HOG feature is refer to -> http://feelmare.blogspot.kr/2014/04/example-source-code-of-extract-hog.html
The method to training SVM of HOG feature is refer to -> http://feelmare.blogspot.kr/2014/04/example-source-code-hog-feature-to.html
The method is using training data.
Again training data make HOG feature, and check the feature is positive or not using trained SVM data.
The example source code is like that.
...
The method to extract HOG feature is refer to -> http://feelmare.blogspot.kr/2014/04/example-source-code-of-extract-hog.html
The method to training SVM of HOG feature is refer to -> http://feelmare.blogspot.kr/2014/04/example-source-code-hog-feature-to.html
The method is using training data.
Again training data make HOG feature, and check the feature is positive or not using trained SVM data.
The example source code is like that.
...
#include < stdio.h>
#include < opencv2\opencv.hpp>
//#include < opencv2\gpu\gpu.hpp>
using namespace cv;
using namespace std;
#ifdef _DEBUG
#pragma comment(lib, "opencv_core247d.lib")
#pragma comment(lib, "opencv_imgproc247d.lib") //MAT processing
#pragma comment(lib, "opencv_objdetect247d.lib") //HOGDescriptor
//#pragma comment(lib, "opencv_gpu247d.lib")
//#pragma comment(lib, "opencv_features2d247d.lib")
#pragma comment(lib, "opencv_highgui247d.lib")
#pragma comment(lib, "opencv_ml247d.lib")
//#pragma comment(lib, "opencv_stitching247d.lib");
//#pragma comment(lib, "opencv_nonfree247d.lib");
#else
#pragma comment(lib, "opencv_core247.lib")
#pragma comment(lib, "opencv_imgproc247.lib")
#pragma comment(lib, "opencv_objdetect247.lib")
//#pragma comment(lib, "opencv_gpu247.lib")
//#pragma comment(lib, "opencv_features2d247.lib")
#pragma comment(lib, "opencv_highgui247.lib")
#pragma comment(lib, "opencv_ml247.lib")
//#pragma comment(lib, "opencv_stitching247.lib");
//#pragma comment(lib, "opencv_nonfree247.lib");
#endif
void main()
{
//variables
char FullFileName[100];
char FirstFileName[100]="./images/upperbody"; //"./NegaImages/Negative"; //
int FileNum=96; //262;
//Load trained SVM xml data
CvSVM svm;
svm.load("trainedSVM.xml");
//count variable
int nnn=0, ppp=0;
for(int i=0; i< FileNum; ++i)
{
sprintf_s(FullFileName, "%s%d.png", FirstFileName, i+1);
//printf("%s\n", FullFileName);
//read image file
Mat img, img_gray;
img = imread(FullFileName);
//resizing
//resize(img, img, Size(16,8) ); //Size(64,48) ); //Size(32*2,16*2)); //Size(80,72) );
resize(img, img, Size(64,48) ); //Size(32*2,16*2)); //Size(80,72) );
//gray
cvtColor(img, img_gray, CV_RGB2GRAY);
//Extract HogFeature
HOGDescriptor d( Size(32,16), Size(8,8), Size(4,4), Size(4,4), 9);
vector< float> descriptorsValues;
vector< Point> locations;
d.compute( img_gray, descriptorsValues, Size(0,0), Size(0,0), locations);
//vector to Mat
Mat fm = Mat(descriptorsValues);
//Classification whether data is positive or negative
int result = svm.predict(fm);
printf("%s - > %d\n", FullFileName, result);
//Count data
if(result == 1)
ppp++;
else
nnn++;
//show image
imshow("origin", img);
waitKey(5);
}
printf(" positive/negative = (%d/%d) \n", ppp, nnn);
}
---