рассчитать оптический поток между несколькими последовательными кадрами - PullRequest
0 голосов
/ 22 января 2019

Как рассчитать оптический поток между несколькими последовательными кадрами (например, каждые 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)`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...