概述
一、依赖项
- 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,可参考我的另外两篇博客
- Ubuntu 安装CUDA与OpenCV
- Ubuntu 编译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.* 版本,参见另外一篇博客
合并使用gpu::FarnebackOpticalFlow计算的水平光流flowx 和垂直光流flowy
最后
以上就是满意刺猬为你收集整理的OpenCV 光流算法加速---使用GPU来计算光流一、依赖项二、代码的全部内容,希望文章能够帮你解决OpenCV 光流算法加速---使用GPU来计算光流一、依赖项二、代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复