2010-04-06 21 views
18

Tengo un problema con algunos códigos básicos de OpenCV. Aquí está mi código:Problema con la lectura de una imagen con la función "cv :: imread" en OpenCv

cv::Mat src; 
src=imread("Calibration.bmp",0); 

if (src.empty()) 
    cout << "Cannot load image" << " "; 
else 
    cout << src.cols << " " << src.rows << " "; 

Desafortunadamente cv :: imread vuelve matriz NULL con cualquier tipo de imagen de entrada (He tratado .bmp, .jpg). El nombre de archivo parece estar funcionando bien (el programa no termina con el error), ya que el uso de un nombre de archivo incorrecto genera un mensaje de error. He intentado usar oldstyle "CvLoadImage" pero ocurrió el mismo resultado. ¿Alguien tiene alguna idea de cómo solucionar esto?

Respuesta

22

Bien, solucioné el problema ... Se produce un problema cuando se mezclan versiones y depura las bibliotecas de OpenCV. He cambiado las rutas y nombres de libs en las propiedades del proyecto y "cv :: imread" funciona bien.

+9

En su directorio OpenCV \ lib debería encontrar dos tipos de archivos .lib (por ejemplo: cv210.lib y cv210d.lib). Si está construyendo su Solución en modo de depuración, en las propiedades del proyecto debe enlazar con cv210d.lib, si está construyendo su solución en modo de lanzamiento, debe enlazar con cv210.lib. Lo mismo corresponde a los archivos dll de OpenCV/bin dorectory. Espero que ayude y lo siento por no responder por un tiempo:/ – Marcin

+1

Eso es cierto, pero ¿por qué sucede esto? Porque otras funciones funcionan perfectamente incluso si se mezclan bibliotecas. ¿Por qué esta función? http://stackoverflow.com/q/9125817/744859 –

+1

Acabo de salvarme de muchos dolores de cabeza. Gracias. – Aliostad

0

Tuve este comportamiento al intentar cargar una imagen de mapa de bits ARGB (que traté de cargar con color). La conversión del mapa de bits a RGB (24bpp) resolvió el problema.

+0

¿Puede elaborar en términos de código? – Maham

Cuestiones relacionadas