opencv 이용시 변수를 일정 수 이상 할당하면 메모리 액세스 위반이 뜹니다.
글쓴이: visualplus / 작성시간: 목, 2010/01/28 - 9:10오후
안녕하세요.
opencv를 공부중인데 정말 이상한 현상이 나타납니다.
제가 공부중인것은 그저 캠에서 영상을 받아 몇가지 작업 후 보여주는 것 인데
변수를 일정 숫자 (10개도 안되는..) 할당하면 메모리 액세스 위반이라는 오류가 뜹니다.
잘 돌아가는 프로그램에 변수 선언 1개만 더하면 오류가 뜨고
그 변수를 지워주면 잘 동작합니다.
밑에는.. 그 오류나는 허접한 소스입니다.
void main() { IplImage* image = 0; IplImage* gray = 0; IplImage* labeled = 0; // 이 변수를 할당하면 에러나고 // 주석처리하면 에러가 안납니다. CvCapture* capture = 0; capture = cvCaptureFromCAM(0); int inputKey; if( capture ) { cvNamedWindow( "T9-camera", 0 ); cvResizeWindow( "T9-camera", 320, 240 ); while(1) { if( !cvGrabFrame( capture )) break; image = cvRetrieveFrame( capture ); gray = cvCreateImage( cvSize(image->width, image->height), 8, 1); cvCvtColor(image, gray, CV_BGR2GRAY); cvThreshold(gray, gray, 0.0, 255.0, CV_THRESH_BINARY | CV_THRESH_OTSU); cvThreshold(gray, gray, 1, 255.0, CV_THRESH_BINARY_INV); cvShowImage("T9-camera", gray); cvReleaseImage(&gray); inputKey = cvWaitKey(10); switch (inputKey) { case 27:// esc goto LoopEnd; break; case 2490368:// up key break; case 2621440:// down key break; case 2424832:// left key break; case 2555904:// right key break; default: if (inputKey >= 0) printf("%d\n", inputKey); } } LoopEnd: cvReleaseCapture( &capture ); cvDestroyWindow( "T9-camera" ); } }
Forums:
댓글 달기