概述
利用OpenCV计算TVL1光流,具体实现可参考 这里,需要注意的是要用 opencv-contrib-python
,opencv-python
是不包含光流计算模块的;这是纯 CPU 的计算方式,计算速度为大约为 3FPS,很难实现实时,考虑使用GPU加速。
1、OpenCV3.x / OpenCV2.x
OpenCV本身支持C++的GPU光流计算方法,完成编译就能使用,但是python的GPU光流计算在OpenCV4.0之前的版本是不被支持的,即便是加入opencv-contrib
,从 这里 也能看到关于这个问题的讨论。考虑到OpenCV支持扩展库,可以自己写一个GPU计算光流的扩展库放在 opencv-contrib
的 modules
中,然后 cmake-make-install
,之后可以在python中调用。具体的实现方式,可以参考 这里,也可以看一下官方给出的 扩展库的使用方法 然后自己写。
2、OpenCV4.1.0
OpenCV4.1.0之后,python已经开始支持cuda计算了,只需要在联合 opencv-contrib
(可以看做是OpenCV的测试版本,一些并不成熟的库都放在这里)编译的时候 WITH_CUDA=ON
即可。成功编译之后完成配置,就可以像下面这样使用:
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计算光流所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复