상세 컨텐츠

본문 제목

OpenCV SURF 버그 해결

학술

by 양고 2010. 8. 4. 18:04

본문

문제
SURF를 몇 번 돌리다 보면 만나는 메시지,
Run-time check failure #3 - The variable 'k' is being used without being initialized.


솔루션
1. 그냥 '계속(C)' 버튼을 눌러서 계속한다. -_-
2. 해당 cvsurf.cpp 파일을 맞게 수정한다.
3. 버그 수정된 OpenCV 2.1을 설치한다.

2.0에 이것 말고도 버그가 많다고 해서 과감하게 2.1로 업그레이드했다.
다음은 2.0 cvsurf.cpp의 해당 부분.

    /* remove keypoints that were marked for deletion */
    for ( i = 0; i < N; i++ )
    {
        CvSURFPoint* kp = (CvSURFPoint*)cvGetSeqElem( keypoints, i );
        if ( kp->size == -1 )
        {
            cvSeqRemove( keypoints, i );
            if ( _descriptors )
                cvSeqRemove( descriptors, i );
            k--;    // i--; 로 수정하면 됨
N--;
        }
    }

물론 위와 같이 cvsurf.cpp를 수정했다면 해당 라이브러리(cv인가?)를 빌드해야 할 것이다.
실은 그게 귀찮아서 2.1로 달렸다는...!

관련글 더보기