ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/gpu/include")
endif()
+ if(HAVE_opencv_ocl)
+ ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/ocl/include")
+ endif()
+
if(CMAKE_COMPILER_IS_GNUCXX AND NOT ENABLE_NOISY_WARNINGS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
endif()
target_link_libraries(${the_target} opencv_gpu)
endif()
+ if(HAVE_opencv_ocl)
+ target_link_libraries(${the_target} opencv_ocl)
+ endif()
+
set_target_properties(${the_target} PROPERTIES
OUTPUT_NAME "cpp-${sample_kind}-${name}"
PROJECT_LABEL "(${sample_KIND}) ${name}")
+#include "opencv2/opencv_modules.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/ml/ml.hpp"
+#ifdef HAVE_OPENCV_OCL
+#include "opencv2/ocl/ocl.hpp"
+#endif
#include <fstream>
#include <iostream>
degree_grid.step = 0;
}
+#ifdef HAVE_OPENCV_OCL
+static void trainSVMClassifier( cv::ocl::CvSVM_OCL& svm, const SVMTrainParamsExt& svmParamsExt, const string& objClassName, VocData& vocData,
+ Ptr<BOWImgDescriptorExtractor>& bowExtractor, const Ptr<FeatureDetector>& fdetector,
+ const string& resPath )
+#else
static void trainSVMClassifier( CvSVM& svm, const SVMTrainParamsExt& svmParamsExt, const string& objClassName, VocData& vocData,
Ptr<BOWImgDescriptorExtractor>& bowExtractor, const Ptr<FeatureDetector>& fdetector,
const string& resPath )
+#endif
{
/* first check if a previously trained svm for the current class has been saved to file */
string svmFilename = resPath + svmsDir + "/" + objClassName + ".xml.gz";
}
}
+#ifdef HAVE_OPENCV_OCL
+static void computeConfidences( cv::ocl::CvSVM_OCL& svm, const string& objClassName, VocData& vocData,
+ Ptr<BOWImgDescriptorExtractor>& bowExtractor, const Ptr<FeatureDetector>& fdetector,
+ const string& resPath )
+#else
static void computeConfidences( CvSVM& svm, const string& objClassName, VocData& vocData,
Ptr<BOWImgDescriptorExtractor>& bowExtractor, const Ptr<FeatureDetector>& fdetector,
const string& resPath )
+#endif
{
cout << "*** CALCULATING CONFIDENCES FOR CLASS " << objClassName << " ***" << endl;
cout << "CALCULATING BOW VECTORS FOR TEST SET OF " << objClassName << "..." << endl;
for( size_t classIdx = 0; classIdx < objClasses.size(); ++classIdx )
{
// Train a classifier on train dataset
+#ifdef HAVE_OPENCV_OCL
+ cv::ocl::CvSVM_OCL svm;
+#else
CvSVM svm;
+#endif
trainSVMClassifier( svm, svmTrainParamsExt, objClasses[classIdx], vocData,
bowExtractor, featureDetector, resPath );
+#include "opencv2/opencv_modules.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/ml/ml.hpp"
#include "opencv2/highgui/highgui.hpp"
+#ifdef HAVE_OPENCV_OCL
+#include "opencv2/ocl/ocl.hpp"
+#endif
#include <stdio.h>
prepare_train_data( trainSamples, trainClasses );
// learn classifier
+#ifdef HAVE_OPENCV_OCL
+ cv::ocl::KNearestNeighbour knnClassifier;
+ Mat temp, result;
+ knnClassifier.train(trainSamples, trainClasses, temp, false, K);
+ cv::ocl::oclMat testSample_ocl, reslut_ocl;
+#else
CvKNearest knnClassifier( trainSamples, trainClasses, Mat(), false, K );
+#endif
Mat testSample( 1, 2, CV_32FC1 );
for( int y = 0; y < img.rows; y += testStep )
{
testSample.at<float>(0) = (float)x;
testSample.at<float>(1) = (float)y;
+#ifdef HAVE_OPENCV_OCL
+ testSample_ocl.upload(testSample);
+
+ knnClassifier.find_nearest(testSample_ocl, K, reslut_ocl);
+
+ reslut_ocl.download(result);
+ int response = saturate_cast<int>(result.at<float>(0));
+ circle(imgDst, Point(x, y), 1, classColors[response]);
+#else
int response = (int)knnClassifier.find_nearest( testSample, K );
circle( imgDst, Point(x,y), 1, classColors[response] );
+#endif
}
}
}
prepare_train_data( trainSamples, trainClasses );
// learn classifier
+#ifdef HAVE_OPENCV_OCL
+ cv::ocl::CvSVM_OCL svmClassifier(trainSamples, trainClasses, Mat(), Mat(), params);
+#else
CvSVM svmClassifier( trainSamples, trainClasses, Mat(), Mat(), params );
+#endif
Mat testSample( 1, 2, CV_32FC1 );
for( int y = 0; y < img.rows; y += testStep )
for( int i = 0; i < svmClassifier.get_support_vector_count(); i++ )
{
const float* supportVector = svmClassifier.get_support_vector(i);
- circle( imgDst, Point(supportVector[0],supportVector[1]), 5, Scalar(255,255,255), -1 );
+ circle( imgDst, Point(saturate_cast<int>(supportVector[0]),saturate_cast<int>(supportVector[1])), 5, CV_RGB(255,255,255), -1 );
}
}