2013-12-20 2 views
0

비교적 작은 (288 x 360) 트래픽 비디오에서 옵티컬 플로우를 사용하고 있는데 문제가 있습니다. 프레임의 일부 지점에서 광학 흐름 벡터를 얻을 수 없습니다.opencv 옵티컬 플로우가 대부분의 벡터를 감지하지 못합니다.

vector<Point2f> features1; 
vector<Point2f> features2; 
int number_of_features = 2000; 
goodFeaturesToTrack(frame1, features1 ,number_of_features,0.01,0.01); 

enter image description here

하고 : 이 이미지

goodFeaturesToTrack()이 추천

기능 "추적하기 좋은 기능"으로서 검출 된 점을 보여준다 당신은 많은 포인트가 뒤에서 발견되었지만 내가 사용할 때를 본다

,

calcOpticalFlowPyrLK()

이런 광류 벡터 얻을 :

TermCriteria optical_flow_termination_criteria= TermCriteria(CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 10, .001); 

calcOpticalFlowPyrLK(
frame1, frame2, features1, features2, 
optical_flow_found_feature,optical_flow_feature_error, 
Size(21,21),5,optical_flow_termination_criteria 
); 

단지 화상 취입과 앞의 지점을 반환

enter image description here

하지만 모든 비디오의 벡터가 필요합니다. 그렇다면 어떻게 뒤에서 벡터를 얻을 수 있습니까?

편집 :

내가 잘못하고있는 것은 작은 벡터를 필터링하는 것이 었습니다.

+0

'calcOpticalFlowPyrLK'와 벡터 그리기 사이의 단계를 보여줄 수 있습니까? –

+0

고마워요! 문제는 바로 한 줄의 필터 였고 기능을 사용하는 데 문제가 있다는 사실을 고집했습니다. 대답을 추가하면 올바른 것으로 표시됩니다. –

답변

0

내 생각 엔 광학 플로우 벡터를 표시하기 전에 어떤 종류의 처리/필터링을 수행하고있는 것 같습니다.