【问题标题】:Speed Up Optical Flow algorithm (If applicable) Python OpenCV加速光流算法(如果适用) Python OpenCV
【发布时间】:2019-04-12 00:59:12
【问题描述】:

我遇到了这种有趣的情况 (Speeding up optical flow (createOptFlow_DualTVL1)),但它不适用于我的需求。我的一般问题是如果适用,我想尽可能加快以下代码的速度。请记住,我希望帧是灰度的并将它们调整为height = 300,同时保持纵横比锁定。另外,我想从该视频中每秒采样 2 帧,所以我假设每个视频都在 30fps 附近。最后,我想使用TV-L1光流算法。有没有办法提升这个算法,因为对于 1 分钟的视频,估计光流大约需要 3 分钟,这对于我的需求来说太耗时了。

提前致谢, 埃文

import math, imutils, cv2
print ("Entering Optical Flow Module...")
        cap = cv2.VideoCapture(video_path)
        current_framerate = cap.get(5)
        ret, frame1 = cap.read()
        prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
        prvs = imutils.resize(prvs, height = 300)


        all_frames_flow=list()
        while(cap.isOpened()):
            frameId = cap.get(1)
            ret, frame2 = cap.read()
            if ret == True:
                if (frameId % (math.floor(current_framerate)/2)==0): # assume videos are 30 fps and we want only 2 frames per second.
                    next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
                    next = imutils.resize(next, height = 300)
                    optical_flow = cv2.DualTVL1OpticalFlow_create()
                    flow = optical_flow.calc(prvs, next, None)
                    all_frames_flow.append(flow)
                    prvs = next
                else:
                    continue
            else:
                break
        cap.release()

【问题讨论】:

    标签: python algorithm opencv optimization opticalflow


    【解决方案1】:

    对于 cv2 版本“'4.1.0'”:

    根据下面对超参数的解释,下面的代码更快,但不太准确。根据要求调整这些参数以解决速度与准确性的权衡问题。

    optical_flow= cv2.optflow.DualTVL1OpticalFlow_create(nscales=1,epsilon=0.05,warps=1)
    flow = optical_flow.calc(new_prvs, new_nxt, None)
    
    • int "nscales" :用于创建图像金字塔的比例数。

    • int "warps" :每个比例的扭曲数。表示按比例计算 I1(x+u0) 和 grad( I1(x+u0) ) 的次数。这是保证方法稳定性的参数。它还会影响运行时间,因此是速度和准确性之间的折衷。

    • double epsilon :数值方案中使用的停止标准阈值,这是精度和运行时间之间的权衡。较小的值会以较慢的收敛为代价产生更准确的解决方案。

    其他参数可以调优here

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 2013-10-19
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      相关资源
      最近更新 更多