我是靠谱客的博主 可耐百褶裙,这篇文章主要介绍python+OpenCV+cuda计算光流,现在分享给大家,希望可以做个参考。

利用OpenCV计算TVL1光流,具体实现可参考 这里,需要注意的是要用 opencv-contrib-pythonopencv-python 是不包含光流计算模块的;这是纯 CPU 的计算方式,计算速度为大约为 3FPS,很难实现实时,考虑使用GPU加速。

1、OpenCV3.x / OpenCV2.x

OpenCV本身支持C++的GPU光流计算方法,完成编译就能使用,但是python的GPU光流计算在OpenCV4.0之前的版本是不被支持的,即便是加入opencv-contrib,从 这里 也能看到关于这个问题的讨论。考虑到OpenCV支持扩展库,可以自己写一个GPU计算光流的扩展库放在 opencv-contribmodules 中,然后 cmake-make-install,之后可以在python中调用。具体的实现方式,可以参考 这里,也可以看一下官方给出的 扩展库的使用方法 然后自己写。

2、OpenCV4.1.0

OpenCV4.1.0之后,python已经开始支持cuda计算了,只需要在联合 opencv-contrib (可以看做是OpenCV的测试版本,一些并不成熟的库都放在这里)编译的时候 WITH_CUDA=ON 即可。成功编译之后完成配置,就可以像下面这样使用:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
import cv2 as cv img1 = cv.imread(img1_path) img2 = cv.imread(img2_path) cuMat1 = cv.cuda_GpuMat() cuMat2 = cv.cuda_GpuMat() cuMat1.upload(img1) cuMat2.upload(img2) TVL1 = cv.cuda_OpticalFlowDual_TVL1.create() cuFlow = TVL1.calc(cuMat1, cuMat2, None) flow = cuFlow.download() // 将 GpuMat 格式的光流转换为 numpy.ndarray

没有找到官方关于python+cuda的文档,只找到一篇 参考 。至于光流的计算可以参考 C++中的实现,二者虽不完全相同但是大差不差,可以对照来看。

最后

以上就是可耐百褶裙最近收集整理的关于python+OpenCV+cuda计算光流的全部内容,更多相关python+OpenCV+cuda计算光流内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部