2014-11-13 3 views
8

Я понял, что в OpenCV 3.0 модуль GPU был заменен модулем CUDA, или лучше он был разделен на несколько модулей.Где функции GPU на OpenCV 3.0?

So cv::gpu::GpuMat был заменен на cv::cuda::GpuMat, в порядке.

Но как насчет функций?

Где, например, имеют следующие переехал:

cv::gpu::GaussianBlurr ? 
cv::gpu::Stream stream; 
stream.enqueueConvert(...) 

Видимо, они не находятся под модулем Cuda (например, не cv::cuda::GaussianBlurr.). Где эта функция может быть найдена в OpenCV 3.0?

+1

Я не знаком с базой кода OpenCV, но, взглянув на репозиторий, CUDA ускорил 'GaussianBlur()', похоже, находится в модуле 'cudaoptflow'. – njuffa

+0

К сожалению, я не нашел GaussianBlur, даже включая cudaoptflow. – mattobob

+0

Я нашел исходный код для GaussianBlur на 'opencv/modules/cudaoptflow/src/cuda/farneback.cu'. Может быть, этот код не входит в вашу сборку из-за проблем с настройкой конфигурации? – njuffa

ответ

5

Все CUDA-ускоренными фильтров (размытие, GaussianBlur, Собел и т.д.) расположены в cudafilters модуле: https://github.com/Itseez/opencv/blob/master/modules/cudafilters/include/opencv2/cudafilters.hpp

Новый API использует Algorthim-базовый подход:

cv::Ptr<cv::cuda::Filter> filter = cv::cuda::createGaussianFilter(src.type(), dst.type(), ksize, sigma); 
filter->apply(src, dst); 

Новый подход помогает сократить выделение памяти для внутренних буферов и уменьшить накладные расходы с этапа инициализации фильтра.

Смежные вопросы