我還有一個關於OpenCV密集光流函數(Farneback)的輸出矩陣的問題。 我曾問一個類似的問題,最近OpenCV密集光流矩陣
,並從我現在知道,存儲在矩陣中的值是X和Y的距離是那個特定的像素相對移動到前一幀(如果我錯了,請糾正我)。
我正在使用640x480像素視頻輸入來計算光流量,並在下面的打印結果中顯示了流矩陣的形狀,npte表示我在讀取前兩幀之後使用了一箇中斷,以顯示陣列的結構。
import cv2
import numpy as np
cap = cv2.VideoCapture("T5.avi")
ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
while (1):
ret, frame2 = cap.read()
next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 2, 5, 1.2, 0)
print flow.shape
print "Flow : : 0"
print flow[:][:][0]
print "Flow : : 1"
print flow[:][:][1]
break
這以下的輸出:
(480, 640, 2)
Flow : : 0
[[ 0.01214151 0.22083586]
[ 0.01184586 0.18637304]
[ 0.01057486 0.15194368]
...,
[ 0.00064609 -0.00283471]
[ 0.00046074 0.0047204 ]
[ 0.000404 -0.00282944]]
Flow : : 1
[[ 0.0152726 0.35010788]
[ 0.01538487 0.28910625]
[ 0.01413684 0.22534071]
...,
[ 0.00082013 -0.00668656]
[ 0.00060558 0.00633681]
[ 0.00056752 -0.00331147]]
現在我現在不知道是爲什麼有存儲在每個那些地方的2個值?是否存儲兩個X和Y值?可能是初始和最終的職位?或者組件是否有虛部?
我已經做了相當多的搜索,但一直沒能找到任何解釋這一點的東西。