2016-07-04 5 views
1

OpenCVs Dense optical flow 기능 (Farneback)의 출력 매트릭스에 관한 다른 질문이 있습니다. 나는이 비슷한 질문을 한 최근OpenCV Dense Optical Flow Matrix

(What is output from OpenCV's Dense optical flow (Farneback) function? How can this be used to build an optical flow map in Python?)

그리고

내가 지금 매트릭스에 저장된 값이 X이고 Y가 특정 픽셀이 이전 프레임으로 상대를 이동하는 것이 거리를 알고 있다고에서 (내가 틀렸다면 나를 바로 잡아주세요.)

광학 흐름을 계산하기 위해 640x480 픽셀 비디오 피드를 사용하고 있습니다. 흐름 매트릭스의 모양은 아래의 인쇄 된 결과에 표시됩니다. npte는 처음 2 프레임을 읽은 후 휴식을 사용하여 배열의 구조.

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]] 

지금 지금 궁금입니까? 두 개의 X와 Y 값이 저장되어 있습니까? 아마도 처음이자 마지막 위치일까요? 또는 구성 요소에 상상의 구성 요소가 있습니까?

나는 많은 검색을 해왔지만 이것을 설명하는 것을 찾을 수 없었다.

답변

0

빠른 답변 : 모든 픽셀에 대해 XY 축 모두에서 위치 변경 값이 표시됩니다.

여기 두 가지 다른 것들이 혼합되어 있다고 생각합니다.
지난 게시물에서 언급했듯이 여기에서 알 수 있듯이 매트릭스 크기는 (480, 640, 2)입니다. 프레임의 특정 픽셀 위치를 나타내는 X,Y 값과 모든 픽셀 위치 내의 DeltaX,DeltaY 변위 값을 섞지 마십시오.

예를 들어, flow[20][20][:]은 위치가 20 x 20 인 픽셀을 나타내며 실제로는 2 플로트 값을 가진 포인트입니다. 이전에 말한 DeltaX,DeltaY입니다.
따라서 flow[20][20][0]은 실제로 픽셀 20x20에서 DeltaX이고 flow[20][20][1]은 동일한 픽셀 (20x20)에서 DeltaY입니다.

희망 사항이 분명해졌습니다.