2010-04-06 13 views
18

Ho riscontrato un problema con un codice OpenCV di base. Ecco il mio codice:Problema con la lettura di un'immagine utilizzando la funzione "cv :: imread" in OpenCv

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

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

Purtroppo cv :: imread torna matrice nulla con qualsiasi tipo di immagine in ingresso (ho cercato .bmp, .jpg). Il nome file sembra funzionare correttamente (il programma non termina con errori), poiché l'utilizzo di un nome file errato genera un messaggio di errore. Ho provato a usare oldstyle "CvLoadImage" ma si è verificato lo stesso risultato. Qualcuno ha qualche idea su come risolvere questo problema?

risposta

22

Ok, ho risolto il problema ... Il problema si verifica quando si configura il rilascio e il debug delle librerie OpenCV. Ho cambiato percorsi e nomi di librerie nelle proprietà del progetto e "cv :: imread" funziona bene.

+9

Nella directory OpenCV \ lib si dovrebbero trovare due tipi di file .lib (ad esempio: cv210.lib e cv210d.lib). Se si sta creando la soluzione in modalità di debug, nelle proprietà del progetto è necessario collegarsi al cv210d.lib, se si sta creando la soluzione in modalità di rilascio, è necessario collegarsi al cv210.lib. La stessa cosa corrisponde ai file dll di OpenCV/bin dorectory. Spero che possa essere d'aiuto e scusa se non rispondo per un po ':/ – Marcin

+1

È vero, ma perché sta succedendo questo? Perché altre funzioni funzionano perfettamente anche se si mescolano le librerie. Perché questa funzione? http://stackoverflow.com/q/9125817/744859 –

+1

Mi hai appena salvato da un sacco di mal di testa. Grazie. – Aliostad

0

Ho avuto questo comportamento durante il tentativo di caricare un'immagine bitmap ARGB (che ho provato a caricare con il colore). La conversione della bitmap in RGB (24bpp) ha risolto il problema.

+0

Potete per favore elaborare in termini di codice? – Maham

Problemi correlati