endif()
set(the_description "OpenCL-accelerated Computer Vision")
-ocv_define_module(ocl opencv_core opencv_imgproc opencv_features2d opencv_objdetect opencv_video opencv_calib3d)
+ocv_define_module(ocl opencv_core opencv_imgproc opencv_features2d opencv_objdetect opencv_video opencv_calib3d opencv_ml)
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wshadow)
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/features2d/features2d.hpp"
+#include "opencv2/ml/ml.hpp"
namespace cv
{
{
return (total + grain - 1) / grain;
}
+
+ /*!***************K Nearest Neighbour*************!*/
+ class CV_EXPORTS KNearestNeighbour: public CvKNearest
+ {
+ public:
+ KNearestNeighbour();
+ ~KNearestNeighbour();
+ KNearestNeighbour(const Mat& trainData, const Mat& labels,
+ const Mat& sampleIdx = Mat().setTo(Scalar::all(0)), bool isRegression = false, int max_k = 32);
+
+ bool train(const Mat& trainData, Mat& labels, Mat& sampleIdx = Mat().setTo(Scalar::all(0)),
+ bool isRegression = false, int max_k = 32, bool updateBase = false);
+
+ void clear();
+
+ void find_nearest(const oclMat& samples, int k, oclMat& lables);
+
+ private:
+ int max_k, var_count;
+ int total;
+ bool regression;
+ oclMat samples_ocl;
+ };
}
}
#if defined _MSC_VER && _MSC_VER >= 1200
return impl->maxComputeUnits;
}
+ unsigned long queryLocalMemInfo()
+ {
+ Info::Impl* impl = Context::getContext()->impl;
+ cl_ulong local_memory_size = 0;
+ clGetDeviceInfo(impl->devices[impl->devnum], CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), (void*)&local_memory_size, 0);
+ return local_memory_size;
+ }
+
void* Context::oclContext()
{
return impl->oclcontext;