2012-09-10 15 views
6

Acabo de instalar OpenCV2.4.2 y creé un proyecto de OpenCV usando CMake. No obtengo ningún error de compilación. Tengo varias funciones de procesamiento de imágenes y tengo 2 aplicaciones:OpenCV2.4.2 excepción no controlada en VideoCapture

1- procesa los datos de un video

2- Procesos datos simulados.

Ambas aplicaciones son idénticas excepto por la extracción de datos del video.

PROBLEMA: Los accidentes de vídeo de procesamiento de solicitudes con

excepción no controlada en 0x75d8a048 en program.exe violación Access Localización lectura 0x049f08c0.

Se estrella en esta parte del código, cuando los marcos de lectura:

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

así que supongo que podría haber un problema con cv::VideoCapture clase en OpenCV 2.4.2. ¿Cómo puedo detectar el problema y resolverlo?

EDITAR

Con cámara de vídeo me las arreglé para coger el mensaje de error:

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

Necesidad de ver algo de código real de la suya. – count0

+0

puede depurar y ver qué pasó exactamente –

+0

bien, estoy en él –

Respuesta

4

¿Está comprobando si la captura en realidad abre el archivo/cámara?

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

No todos los códecs son compatibles por defecto. Esto depende de la biblioteca que use debajo para abrir el video. (Esto podría ser ffmpeg o quicktime).

También se puede coger la excepción a sí mismo, sólo para estar en el lado seguro para futuros problemas

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

Sí, estoy revisando y se abre. Yo uso video grabado Todo se hace bien porque uso este código con OpenCV 2.3.1 y no dio problemas. –

+0

Probablemente sea un problema con la biblioteca de videos utilizada, ejecutarlo aunque un depurador le dará más información sobre la llamada y con qué video subsistema en realidad causa problemas. – count0

+0

Intenté el manejador de excepciones, pero el programa se bloquea y se detiene, por lo que la excepción no queda atrapada. Se detiene en la segunda línea de tu código ... –

Cuestiones relacionadas