2014-11-13 31 views
8

Tôi hiểu rằng trong OpenCV 3.0, GPU mô-đun đã được thay thế bằng mô-đun CUDA, hoặc tốt hơn nó đã được chia thành nhiều mô-đun.Các chức năng GPU trên OpenCV 3.0 ở đâu?

Vì vậy, cv::gpu::GpuMat đã được thay thế bằng cv::cuda::GpuMat, tiền phạt.

Nhưng còn các chức năng thì sao?

đâu ví dụ sau đây đã chuyển đến:

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

Rõ ràng họ không dưới mô-đun CUDA (ví dụ như không cv::cuda::GaussianBlurr.). Chức năng này có thể được tìm thấy ở đâu trong OpenCV 3.0?

+1

Tôi không quen thuộc với cơ sở mã OpenCV, nhưng hãy xem nhanh kho lưu trữ, CUDA tăng tốc 'GaussianBlur()' có vẻ là trong mô-đun 'cudaoptflow'. – njuffa

+0

Đáng tiếc là tôi không tìm thấy GaussianBlur thậm chí bao gồm cả cudaoptflow. – mattobob

+0

Tôi tìm thấy mã nguồn cho GaussianBlur tại 'opencv/modules/cudaoptflow/src/cuda/farneback.cu'. Có thể mã này không được đưa vào bản dựng của bạn do các vấn đề về cấu hình xây dựng? – njuffa

Trả lời

5

lọc Tất cả CUDA tăng tốc (Blur, GaussianBlur, Sobel, vv) được đặt tại cudafilters mô-đun: https://github.com/Itseez/opencv/blob/master/modules/cudafilters/include/opencv2/cudafilters.hpp

API mới sử dụng cách tiếp cận Algorthim-base:

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

Cách tiếp cận mới giúp giảm phân bổ bộ nhớ cho bộ đệm nội bộ và giảm chi phí từ giai đoạn khởi tạo bộ lọc.

Các vấn đề liên quan