2013-07-07 5 views
-1

누구든지 OpenCV의 cvCalcOpticalFlowPyrLK에서 각 픽셀의 속도 정보를 얻을 수 있도록 도와 줄 수 있습니까?cvCalcOpticalFlowPyrLK에서 픽셀의 속도 벡터를 추출하는 방법

+0

어떻게 이런 일이에서 어떤 다른 [다른 질문?] (http://stackoverflow.com/q/16672003/1601291) – Aurelius

+0

이 시간 goodFeaturesToTrack를 사용하는 것을 시도하고있다 cvCalcOpticalFlowPyrLK와 함께하지만 이전 하나는 calcOpticalFlowFarneback을 사용하고 나는 예상했던 결과를 얻지 못했습니다. – Dave

답변

0

openCV 코드와 함께 사용할 수있는 예제 (https://github.com/Itseez/opencv/blob/master/samples/cpp/lkdemo.cpp)를 살펴보십시오.

superquick 요약 : 그것은에서 광학 흐름을 계산하는 포인트를 필요로하므로

calcOpticalFlowPyrLK 스파 스입니다. 포인트를 초기화 goodFeaturesToTrack를 사용 (

은 그런 이미지와 전체 포인트 벡터 소요 (포인트 위치를 수정하는 cornerSubPix()를 사용하여 문서에 사용할 수있는 이미지 입력으로 빈 포인트 벡터 (더하기 몇 가지 매개 변수를) 플러스 다른 매개 변수))

마지막으로 새 이미지를로드하고 이전 이미지에서 초기화 한 점에 calcOpticalFlowPyrLK을 실행합니다 (두 이미지 (이전)) 및 전체 및 빈 포인트 벡터 (이전 이미지의 점에 해당) 그리고이 하나). (아마도 다음 이미지의 포인트를 초기화 할 필요는 없지만 calcOpticalFlowPyrLK가 제공 한 포인트를 사용하는 것이 좋습니다)

포인트 위치의 차이를 이미지 사이의 시간으로 나눈 값은 속도를 제공합니다.

그러나

는 세부 사항에 대한 예를 살펴 않습니다

+0

도와 주신 Kamjagi에게 감사드립니다. 다른 Q는 프레임의 모든 픽셀의 광학 흐름을 얻을 수 있습니까? 아니면 goodFeaturesToTrack이 추천 한 좋은 것으로 간주되는 픽셀 만 볼 수 있습니까? – Dave

+0

친애하는 Kamjagi, 비디오에서 프레임의 모든 픽셀의 옵티컬 플로/속도를 표시하기 위해 내가하고 싶은 것을 명확히하기 위해. – Dave

+0

그런 다음 스파 스보다는 고밀도 문제를 설명하므로 calcOpticalFlowPyrLK를 사용할 수 없습니다. createOptFlow_DualTVL1 및 밀도가 높은이 예제를 살펴보십시오. https://github.com/Itseez/opencv/blob/master/samples/cpp/tvl1_optical_flow.cpp – kamjagin