版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DumpDoctorWang/article/details/82318192
一、依赖项
- OpenCV 2.4.13.x + CUDA 8.0
- OpenCV 3.2.0及以上 + CUDA 8.0
- OpenCV 3.4.x + CUDA 9.1
OpenCV编译时,需要添加CUDA 支持。安装CUDA 以及OpenCV,可参考我的另外两篇博客
二、代码
计算稠密光流时,一般使用”calcOpticalFlowFarneback“这个函数来计算,比如
Mat pre = imread(...);
Mat next = imread(...);
Mat preGray, nextGray;
cvtColor(pre, preGray, CV_BGR2GRAY);
cvtColor(next, nextGray, CV_BGR2GRAY);
Mat opf;//光流
calcOpticalFlowFarneback(preGray, nextGray, opf, 0.5, 3, 15, 3, 5, 1.1, 0);
那么使用GPU来加速时,代码如下
OpenCV 3.2.0及以上版本
Mat pre = imread(...);
Mat next = imread(...);
Mat preGray, nextGray;
cvtColor(pre, preGray, CV_BGR2GRAY);
cvtColor(next, nextGray, CV_BGR2GRAY);
cuda::GpuMat g_pg(preGray); //当前帧的灰度GpuMat
cuda::GpuMat g_ng(nextGray); //下一帧的灰度GpuMat
cuda::GpuMat opfGpu; //光流GpuMat
auto opf_tool = cv::cuda::FarnebackOpticalFlow::create(3,0.5,false,15,3,5,1.1,0);
Mat opf; // 光流
opf_tool->calc(g_pg,g_ng,opfGpu);
opfGpu.download(opf);
OpenCV 2.4.13.* 版本,参见另外一篇博客