2012-09-10 2 views
6

방금 ​​OpenCV2.4.2를 설치하고 CMake를 사용하여 OpenCV 프로젝트를 만들었습니다. 컴파일 오류가 발생하지 않습니다. I는 화상 처리를위한 여러 가지 기능을 갖고 I 2 개 애플리케이션가 : 동영상 데이터 시뮬레이션VideoCapture에서 OpenCV2.4.2 처리되지 않은 예외

2- 프로세스

-1- 데이터를 처리한다.

두 응용 프로그램은 비디오의 데이터 추출을 제외하고 모두 동일합니다.

문제 :은 Program.exe 액세스 위반 읽기 위치 0x049f08c0에서 0x75d8a048에서

처리되지 않은 예외가있는 응용 프로그램 처리 비디오 충돌합니다. 프레임을 읽을 때

그것은 코드의이 부분에 충돌 :

cv::VideoCapture _video; 
while(1) 
{  
     // grab the frame 
     _video >> frame; <-------------CRASHES HERE 
       processFrame(frame); 
} 

그래서 내가 OpenCV의 2.4.2에서 cv::VideoCapture 클래스에 문제가있을 수있을 것 같아요. 어떻게 문제를 발견하고 해결할 수 있습니까? 캡처는 실제로 파일/카메라를 열 경우

OpenCV Error: Assertion failed (m.dims >= 2) in unknown function, file ..\..\..\ 
src\opencv\modules\core\src\matrix.cpp, line 268 
OpenCV Error: Assertion failed (0 <= _rowRange.start && _rowRange.start <= _rowR 
ange.end && _rowRange.end <= m.rows) in unknown function, file ..\..\..\src\open 
cv\modules\core\src\matrix.cpp, line 283 
+0

의 안전을 할 수 있습니다. – count0

+0

정확히 무슨 일이 있었는지 디버그하고 볼 수 있습니다. –

+0

괜찮습니다. 나는 그것에 있습니다. –

답변

4

은 확인 : 나는 오류 메시지를 잡으려고 관리 비디오 카메라와

편집

?

if(_video.isOpened()) { // check if capture succeeded 
     // do stuff 
    } 

기본값별로 모든 코덱이 지원되는 것은 아닙니다. 이는 비디오를 열 때 밑에 사용하는 라이브러리에 따라 다릅니다. (이것은 ffmpeg 또는 quicktime 일 수 있습니다). 당신의 몇 가지 실제 코드를 볼 필요가

또한 당신은 예외를 직접 잡을 수있는 단지 미래의 문제

try { 
    _video >> frame; 
} catch (cv::Exception) { 
    cout << "An exception has accurred" << endl; 
}; 
+0

예, 확인 중이며 열려 있습니다. 나는 기록 된 비디오를 사용한다. OpenCV 2.3.1에서이 코드를 사용하고 문제가 발생하지 않았기 때문에 모든 것이 올바르게 완료되었습니다. –

+0

디버거가 어떤 호출과 어떤 비디오를 더 잘 볼 수 있겠지만 사용 된 비디오 라이브러리에 문제가있는 것 같습니다. 서브 시스템은 실제로 문제를 일으킨다. – count0

+0

예외 처리기를 시도했지만 예외가 발생하지 않도록 프로그램이 충돌하고 중지합니다. 그것은 코드의 두 번째 줄에서 멈 춥니 다. –