mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 14:13:15 +08:00
Added knearest neighbor of OpenCL version.
It includes the accuracy/performance test and the implementation of KNN.
This commit is contained in:
parent
94966b38c0
commit
06c33df307
@ -3,5 +3,5 @@ if(NOT HAVE_OPENCL)
|
||||
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)
|
||||
|
@ -51,6 +51,7 @@
|
||||
#include "opencv2/imgproc/imgproc.hpp"
|
||||
#include "opencv2/objdetect/objdetect.hpp"
|
||||
#include "opencv2/features2d/features2d.hpp"
|
||||
#include "opencv2/ml/ml.hpp"
|
||||
|
||||
namespace cv
|
||||
{
|
||||
@ -1892,6 +1893,29 @@ 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
|
||||
|
@ -167,6 +167,7 @@ namespace cv
|
||||
template<>
|
||||
bool CV_EXPORTS queryDeviceInfo<IS_CPU_DEVICE, bool>(cl_kernel kernel);
|
||||
|
||||
unsigned long CV_EXPORTS queryLocalMemInfo();
|
||||
}//namespace ocl
|
||||
|
||||
}//namespace cv
|
||||
|
@ -1033,6 +1033,14 @@ namespace cv
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user