#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/ml/ml.hpp> //#include <opencv2/gpu/gpu.hpp> #include <fstream> #include <iomanip> #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/objdetect/objdetect.hpp" using namespace std; using namespace cv; int main() { #if 0 Mat image; image = imread("D:\dataset\temp\6.png"); HOGDescriptor hog; vector<float> v_feature; hog.compute(image, v_feature, cv::Size(8, 8)); //hog.compute(image, v_feature, cv::Size(16, 16)); int featureVecSize = v_feature.size(); cout << "****************************************haha****************" << endl; cout << featureVecSize<<endl; #else //*************************************************************************************************** // 初始化 //*************************************************************************************************** //char positivePath[256] = "D:\dataset\INRIAPerson\Train\pos\"; //char negativePath[256] = "D:\dataset\INRIAPerson\Train\neg\"; //char testPath[256] = "D:\dataset\INRIAPerson\Test\pos\"; char positivePath[256] = "D:\dataset\INRIAPerson\train_64x128_H96\pos\"; char negativePath[256] = "D:\dataset\INRIAPerson\train_64x128_H96\neg\"; char testPath[256] = "D:\dataset\INRIAPerson\test_64x128_H96\pos\"; char classifierSavePath[256] = "D:\dataset\INRIAPerson\myResult"; int positiveSampleCount = 614; int negativeSampleCount = 1218; //int positiveSampleCount = 100; //int negativeSampleCount = 100; int totalSampleCount = positiveSampleCount + negativeSampleCount; int testSampleCount = 288; CvMat *sampleFeaturesMat = cvCreateMat(totalSampleCount, 94500, CV_32FC1); //参数1764? cvSetZero(sampleFeaturesMat); CvMat *sampleLabelMat = cvCreateMat(totalSampleCount, 1, CV_32FC1);//样本标识 cvSetZero(sampleLabelMat); //CvMat *testFeaturesMat = cvCreateMat(testSampleCount, 94500, CV_32FC1); //参数1764? 正288,负453 CvMat *testFeaturesMat = cvCreateMat(1, 94500, CV_32FC1); //参数1764? 正288,负453 cvSetZero(testFeaturesMat); CvMat *testLabelMat = cvCreateMat(testSampleCount, 1, CV_32FC1);//样本标识 cvSetZero(testLabelMat); //float testLabelMat[288] = {0}; //Mat sampleFeaturesMat(); //*************************************************************************************************** // 正例的特征 //*************************************************************************************************** //positive文件读入 //ifstream fin(positivePath, ios::in); //if (!fin) //{ // cout << "positivePath can not open the file!" << endl; // return -1; //} char positiveImage[256]; string path; string s_positiveImage; for (int i = 0; i < positiveSampleCount; i++) { //图片名修改 memset(positiveImage, '