GPU Cuda optical flow

本篇是对原文的翻译
这个OpenCV教程是用c++编写的OpenCV中GPU-Cuda光流的一个非常简单的代码示例。介绍了farneback光流法的设计方案、代码和说明。Farneback算法是一种用于处理给定图像中所有像素的密集方法。密集方法速度较慢,但在处理图像的所有像素时更精确。在下面的示例中,我仅基于网格显示几个像素。我没有显示所有的像素。与稠密方法相反的是稀疏方法,如lucaskanade,只使用选定的像素子集。他们跑得更快。这两种方法都有特定的应用。Lucas-Kanade在跟踪中有着广泛的应用。farneback可以用于分析图像场景中更复杂的运动,并根据这些变化进行图像分割。由于密集方法的速度稍慢,GPU和Cuda实现可以大大提高计算图像所有像素光流的性能。

Content cuda::FarnebackOpticalFlow 教程

  • 编译和运行代码的要求
  • 如何用Cuda编译OpenCV的简要说明
  • Visual Studio Opencv Cuda项目配置
  • FarnebackOpticalFlow
  • 代码的简要描述
  • 完整的代码

前提条件 cuda::FarnebackOpticalFlow

  • 英伟达CUDA工具包 我使用的是第11版
  • Visual Studio 2019
  • Opencv 4.5与Cuda一起从源码构建

Build OpenCV with Cuda contrib
用Cuda contrib构建OpenCV 用Cuda和贡献库编译Opencv的教程在这里。你可以把GStreamer排除在外。
Visual studio OpenCV Cuda configuration
下面的例子显示了Visual Studio项目的确切设置。除了正常的OpenCV配置之外。你必须要指向几个位置。包括目录…CUDA\v11.0\include和额外的库依赖…CUDA\v11.0\x64。 最后一件事是把OpenCV Cuda的特定库添加到额外的依赖项中。只要按照这些图片就可以了。

cuda::FarnebackOpticalFlow class
将FarnebackOpticalFlow与默认参数一起使用非常简单明了。 第一步是创建一个指向FarnebackOpticalFlow对象的指针。 OpenCV中的Ptr是C ++ 11共享指针。 我相信,此指针最重要的优点是自动清理。

光流的实际计算是在此calc函数中完成的。 第一个参数是前一张图像的GPU mat GpuImg0,第二个参数GpuImg1用于实际图像,流程是GpuMat,将结果放置在该位置。 根据GpuImg0和GpuImg1之间的差异计算光通量;farn->calc(GpuImg0, GpuImg1, gflow);

OpenCV光学流程代码的简短说明流程很简单。 您必须捕获至少两个图像才能计算流量。 外观的第一次运行只会填充先前的图像frame1。

如果frame1存在,则只需计算流并在循环结束时更新frame1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值