2014-02-20 2 views
1

기능 추적에 calcOpticalFlowPyrLK를 사용하려고합니다. 함수는 다음과 같이 사용됩니다.OpenCV 2.3.1에서 calcOpticalFlowPyrLK를 사용하는 중 오류가 발생했습니다.

TermCriteria termcrit (CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20,0.03);

크기 winSize (31,31);

벡터 < uchar> status;

벡터 < float> err;

calcOpticalFlowPyrLK (prevGray, 회색, 점 [0], 상태 [1], 상태, 오류, winSize, 3, termcrit, 0, 0, 0.001);

모든 매개 변수가 정확합니다. 포인트 [0]에는 이미 포인트 세트가 있습니다. 그러나 프로그램을 실행하려고하면 다음 오류가 발생합니다. 나는 비주얼 C를 사용하고 ++ 2010

을 ......................................................

GFFER.exe의 0x74c426df (msvcr100.dll)에서 첫 번째 예외가 발생했습니다. 0xC0000005 : 0x058fe000 위치 쓰기 액세스 위반입니다. GFFER.exe의 0x74c426df (msvcr100.dll)에서 처리되지 않은 예외가 발생했습니다. 0xC0000005 : 0x058fe000 위치를 기록하는 액세스 위반입니다.

..............................

어떻게이 문제를 해결할 수 있습니다.

미리 감사드립니다.

+0

prevGray, 회색이 적절하게 초기화되었는지 확인하십시오. 2D 점 벡터에도 동일합니다. 이러한 변수를 초기화하는 위치에 코드를 제공하여 문제에 대한보다 자세한 정보를 제공해야합니다. 현재이 오류는 코드에서 할당되지 않은 메모리에 액세스하려고 시도하고 있음을 나타냅니다. 그러나 당신이 준 코드의 몇 줄에서부터 말하기는 어렵습니다. – lightalchemist

+0

디버그에서 릴리스로 전환하여 해결 된 유사한 문제가있었습니다. 문제의 근본 원인이 무엇인지 또는 왜이 문제가 해결되었는지는 확실하지 않습니다. – NickF

답변

0

액세스 위반 쓰기 위치

오류가 초기화되지 않는 위치에 데이터를 기록 할 때 발생하는 것 같습니다. 코드에서 , 점은 [1]상태ERR쓰기가 발생 유일한 위치입니다.

상태 및 오류가 있으며 올바르게 정의되었습니다. 문제는 point[1]이어야합니다. 형식이 vector<Point2f>입니다.

벡터 배열 대신 두 개의 별도 벡터를 사용하는 것이 좋습니다 (예 : point0 point1).

관련 문제