2015-12-10 4 views
1

Основываясь на изменениях в openCV 3.0 и openCL, я не могу заставить pyMeanShiftFiltering работать с помощью openCL. Я знаю, что ocl :: meanShiftFiltering поддерживается в openCV 2.4.10. Для выполнения этих двух функций требуется одинаковое количество времени для выполнения.openCV 3.0, openCL и meanShiftFiltering

Как я могу проверить, какие функции в openCV 3.0 поддерживаются в openCL? Какие-либо предложения?

#include <opencv2/core/ocl.hpp> //attempting to use openCL 
using namespace cv; 
using namespace ocl; 
    void meanShiftOCL() 
    { 
     setUseOpenCL(true) 
     UMat in, out; 
     imread("./images/img.png").copyTo(in); 
     pyrMeanShiftFiltering(in, out, 40, 20, 3);  
    } 


    //not using openCL 
    void meanShift() 
    { 
    Mat in, out; 
    imread("./images/img.png").copyTo(in); 
    pyrMeanShiftFiltering(in, out, 40, 20, 3);   
    } 

ответ

1

Я не уверен, что есть простой способ, чтобы определить его с заданными OpenCV бинарных файлов, но вы можете перекомпилировать OpenCV себя дополнительные определения (могут быть указаны в CMake):

CV_OPENCL_RUN_VERBOSE

При этом определяют каждую функцию, для которой OpenCL реализация доступна будет печатать на консоли (стандартный вывод) следующее сообщение:

<function name>: OpenCL implementation is running

Рассматриваемые на ваш вопрос - в настоящее время pyrMeanShiftFiltering не OpenCL реализации, как я знаю.

+0

Спасибо за ваш ответ. Это облом, что у pyrMeanShiftFiltering нет реализации openCL. В версии 2.4.10 ocl :: meanShiftFiltering доступен. По какой причине они забрали его? \ n Есть ли способ в документации 3.0, чтобы определить, включена ли функция openCL? –

+0

Я не уверен, почему это произошло - возможно, вы можете создать запрос функции (https://github.com/Itseez/opencv/issues) или даже добавить реализацию и сделать запрос на pull. О документации - я не нашел возможности определить, доступна ли реализация OpenCL ... – avtomaton

+0

Как я вижу, существует ** версия cuda ** 'pyrMeanShiftFiltering'. Также есть ** OpenCL ** - заряженные 'pyrUp' и' pyrDown'. – avtomaton