2012-09-10 26 views
6

Właśnie zainstalowałem OpenCV2.4.2 i utworzyłem projekt OpenCV przy użyciu CMake. Nie otrzymuję żadnych błędów kompilacji. I mają kilka funkcji przetwarzania obrazów i mają 2 wnioski: daneNieobsługiwany wyjątek OpenCV2.4.2 w VideoCapture

1- procesów z filmu

2- procesów symulowanych danych.

Obie aplikacje są identyczne, z wyjątkiem pobierania danych z wideo.

PROBLEMU: Przetwarzanie zastosowanie awarii wideo z

nieobsługiwanym wyjątku w 0x75d8a048 z naruszeniem dostępu program.exe położenia 0x049f08c0 odczytu.

To awarii w tej części kodu, podczas czytania ramek:

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

Więc myślę, że może być problem z cv::VideoCapture klasy w OpenCV 2.4.2. Jak mogę wykryć problem i go rozwiązać?

EDIT

z kamerą wideo udało mi się złapać komunikat o błędzie:

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

trzeba zobaczyć jakiś rzeczywisty kod twojej. – count0

+0

można debugować i zobaczyć, co dokładnie się stało –

+0

w porządku, jestem na tym –

Odpowiedz

4

Czy sprawdzenie, czy przechwytywanie faktycznie otworzył plik/kamerę?

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

Nie wszystkie kodeki są obsługiwane domyślnie. Zależy to od biblioteki, której używasz, aby otworzyć wideo. (Może to być ffmpeg lub quicktime).

Ponadto można złapać wyjątkiem siebie, po prostu się na bezpiecznej stronie dla przyszłych problemów

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

Tak, sprawdzam i jest otwarty. Używam nagranego wideo. Wszystko jest zrobione poprawnie, ponieważ korzystam z tego kodu w OpenCV 2.3.1 i nie sprawiało mi problemów –

+0

To prawdopodobnie problem z biblioteką wideo, z której korzysta, chociaż debugger da ci lepszy wgląd w to, do którego połączenia i z którego wideo podsystem, który faktycznie powoduje problemy. – count0

+0

Próbowałem obsługi wyjątku, ale program zawiesza się i zatrzymuje, więc wyjątek nie jest catched. Zatrzymuje się w drugiej linii kodu ... –

Powiązane problemy