目前,opencv中的cuda接口能够实现的算法还比较少,并不是很齐全,使用前需要先确定算法是否存在cuda接口
相对2.x的改动
* 不再使用cv::gpu的命名空间,改用cv::cuda
* 头文件中需要单独引用
#include "opencv2/core.hpp"
#include "opencv2/cudaarithm.hpp"
#include "opencv2/cudafilters.hpp"
...
调用不同的cuda函数需要引用对应的头文件
* 增加了一些函数,同时删除了一些函数,改变了某些函数的用法
例如,gpu::add、 gpu::multiply、gpu::subtract的形参有所改动,使用stream时与2.x版本是一样的
例如,滤波函数的调用方式也改变了,先要创建一个cv::Ptr
cv::Ptr gauss = cv::cuda::createGaussianFilter(CV_32F, CV_32F, Size(11, 11), 1.5, 0, cv::BORDER_DEFAULT,-1); //创建高斯滤波器
gauss->apply(src, dst); //高斯滤波
前提说明:每个库包含的类或函数均可以在对应的.hpp中找到,与cuda相关的hpp存放在include\opencv2目录下,并以cuda开头
opencv2/cudaarithm.hpp和opencv_cudaarithm300.lib
基本运算,如add、subtract、multiply、divide等
opencv2/cudaimgproc.hpp和opencv_cudaimgproc300.lib
图像处理(色域处理、直方图、霍夫变换、特征检测),如HoughLinesDetector类、CannyEdgeDetector类、CLAHE类、calcHist函数等
opencv2/cudafilters.hpp和opencv_cudafilters300.lib
二维图像滤波算法,如Box Filter、Linear Filter、Laplacian Filter等
opencv2/cudafeatures2d.hpp和opencv_cudafeatures2d300.lib
特征检测和描述,DescriptorMatcher类、ORB类
opencv2/cudaobjdetect.hpp和opencv_cudaobjdetect300.lib
目标检测,包括HOG、CascadeClassifier