void testAll(){ std::ofstream out("log.txt"); auto cerrbuf = std::cerr.rdbuf(out.rdbuf()); auto clogbuf = std::clog.rdbuf(out.rdbuf()); if(testTargets()) std::clog << "targets ok\n########################\n"<< std::endl; else std::cerr << "targets failed\n########################\n" << std::endl; if(testPlanets()) std::clog << "planets ok\n########################\n"<< std::endl; else std::cerr << "planets failed\n########################\n" << std::endl; if(testSpaceships()) std::clog << "spaceships ok\n########################\n"<< std::endl; else std::cerr << "spaceships failed\n########################\n" << std::endl; if(testDeathStar()) std::clog << "deathstar ok\n########################\n"<< std::endl; else std::cerr << "deathstar failed\n########################\n" << std::endl; std::clog.rdbuf(clogbuf); std::cerr.rdbuf(cerrbuf); }
double QFoldTest(const cv::Mat &features, const cv::Mat &targets, size_t folds) { double error = 0; size_t foldSize = features.rows / folds; for(size_t fold = 0; fold < folds; ++fold) { cv::Mat learnFeatures(features.rows - foldSize, features.cols, CV_32FC1); cv::Mat learnTargets(targets.rows - foldSize, targets.cols, CV_32SC1); if(fold > 0) { CopyROI(features, cv::Range(0, fold * foldSize), cv::Range(0, features.cols), &learnFeatures, cv::Range(0, fold * foldSize), cv::Range(0, learnFeatures.cols)); CopyROI(targets, cv::Range(0, fold * foldSize), cv::Range(0, targets.cols), &learnTargets, cv::Range(0, fold * foldSize), cv::Range(0, learnTargets.cols)); } if(fold < folds) { CopyROI(features, cv::Range((fold + 1) * foldSize, features.rows), cv::Range(0, features.cols), &learnFeatures, cv::Range(fold * foldSize, learnFeatures.rows), cv::Range(0, learnFeatures.cols)); CopyROI(targets, cv::Range((fold + 1) * foldSize, targets.rows), cv::Range(0, targets.cols), &learnTargets, cv::Range(fold * foldSize, learnTargets.rows), cv::Range(0, learnTargets.cols)); } cv::Mat testFeatures(foldSize, features.cols, CV_32FC1); testFeatures = features(cv::Range(fold * foldSize, (fold + 1) * foldSize), cv::Range::all()); cv::Mat testTargets(foldSize, targets.cols, CV_32SC1); testTargets = targets(cv::Range(fold * foldSize, (fold + 1) * foldSize), cv::Range::all()); CvSVM svm; // Learn(learnFeatures, learnTargets, &svm); Learn(learnFeatures, learnTargets, &svm); error += Test(svm, testFeatures, testTargets); } return error / folds; }
/* * Sets the target row and column */ void setTargetMove(int tRow, int tCol) { getQueue(NULL)->targetRow = tRow; getQueue(NULL)->targetCol = tCol; testTargets(); }