Tipo de matriz no reconocido o no admitido en la función cvGetMat en python opencv

Estoy tratando de codificar en python opencv-2.4.3, me está dando un error como el siguiente

Traceback (most recent call last): File "/home/OpenCV-2.4.3/cam_try.py", line 6, in  cv2.imshow('video test',im) error: /home/OpenCV-2.4.3/modules/core/src/array.cpp:2482: error: (-206) Unrecognized or unsupported array type in function cvGetMat 

No entiendo qué significa eso, ¿Alguien me puede ayudar? Gracias.

El fragmento relevante del mensaje de error es un Unrecognized or unsupported array type in function cvGetMat . La función cvGetMat() convierte matrices en un Mat . Una Mat es el tipo de datos de matriz que OpenCV usa en el mundo de C / C ++ (Nota: la interfaz de Python OpenCV que está utilizando utiliza matrices Numpy, que luego se convierten detrás de la escena en matrices Mat ). Con ese trasfondo en mente, el problema parece ser que la matriz que está pasando a cv2.imshow() está mal formada. Dos ideas:

  1. Esto podría deberse a un comportamiento peculiar en su cámara web … en algunas cámaras, los marcos nulos se devuelven de vez en cuando. Antes de pasar la matriz im a imshow() , intente asegurarse de que no sea nulo.

  2. Si se produce el error en cada fotogtwig, elimine parte del procesamiento que está realizando y llame a cv2.imshow() inmediatamente después de tomar el fotogtwig de la cámara web. Si eso todavía no funciona, entonces sabrás que es un problema con tu cámara web. De lo contrario, agregue nuevamente su línea de procesamiento por línea hasta que aísle el problema. Por ejemplo, comience con esto:

     while True: # Grab frame from webcam retVal, image = capture.read(); # note: ignore retVal # faces = cascade.detectMultiScale(image, scaleFactor=1.2, minNeighbors=2, minSize=(100,100),flags=cv.CV_HAAR_DO_CANNY_PRUNING); # Draw rectangles on image, and then show it # for (x,y,w,h) in faces: # cv2.rectangle(image, (x,y), (x+w,y+h), 255) cv2.imshow("Video", image) i += 1; 

fuente: Pregunta relacionada: OpenCV C ++ Video Capture no parece funcionar

Estaba teniendo el mismo error, y después de aproximadamente una hora de buscar el error, encontré que la ruta a la imagen no estaba bien definida. Resolvió mi problema, puede ser que resuelva el tuyo.

Resolví el problema usando una imagen BGR. el de mi cámara era YUYV por defecto!

Estoy trabajando en Windows con Opencv 2.3.1 y Python 2.7.2, así que tuve el mismo problema, lo resolví pegando los siguientes archivos DLL: opencv_ffmpeg.dll y opencv_ffmpeg_64.dll en la carpeta de instalación de Python. Tal vez te ayude con una solución similar en Ubuntu.

Para mí, como lo hizo Gab Hum, copié opencv_ffmpeg245.dll en mi carpeta de código python. Entonces funciona.

Verifique su matriz de imágenes (o NpArray), (imprimiéndola) si está intentando pasar una matriz de imágenes de una sola vez en lugar de pasar cada imagen a la vez.

Una matriz de una sola imagen se vería así:

[[[76 85 103] … [76 85 103]], …]

Las filas encierran cada columna, cada matriz (píxeles) no encierra filas, cada imagen se compone de matrices (píxeles).