문제
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로 달렸다는...!