如何计算几个连续帧(例如,每10帧)之间的光通量?然后将每个图像计算出的光流转换成包含水平和垂直分量的“流图像”:x流量值,y流量值以及流量大小。我正在使用下面的代码来计算光流量两个图像,但我不知道该怎么做:
如果我有一个文件夹,例如以500个视频帧为图像,如何计算几个连续帧(例如,每10帧)之间的光通量?
从每个图像计算出的光学流量被转换为包含水平和垂直分量的“流量图像”:x流量值,y流量值以及流量大小
import cv2
import numpy as np
import matplotlib.pyplot as plt
frame1 = cv2.imread('C:/Users/Documents/images/frame_det_00_000001.bmp')
frame2 = cv2.imread('C:/Users/Documents/images/frame_det_00_000001.bmp')
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
next1 = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
flow = cv2.calcOpticalFlowFarneback(prvs, next1, None,0.5, 3, 15, 3, 5, 1.2, 0)
horz = cv2.normalize(flow[...,0], None, 0, 255, cv2.NORM_MINMAX)
vert = cv2.normalize(flow[...,1], None, 0, 255, cv2.NORM_MINMAX)
horz = horz.astype('uint8')
vert = vert.astype('uint8')
plt.subplot(1, 4, 1)
plt.title('Frame 1')
plt.imshow(frame1)
plt.subplot(1, 4, 2)
plt.title('Frame 2')
plt.imshow(frame2)
plt.subplot(1, 4, 3)
plt.title('Horz')
plt.imshow(horz)
plt.subplot(1,4,4)
plt.title('Vert')
plt.imshow(vert)`