OpenCv

2010-04-06 30 views
18

'da "cv :: disread" işlevini kullanarak bir görüntüyü okurken sorun Bazı temel OpenCV kodlarıyla ilgili bir sorunum var. (Ben, .jpg .bmp denedim) giriş görüntüsünün her türlü NULL matrisi döndürür imreadOpenCv

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

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

Maalesef cv ::: İşte benim kodudur. Dosya adı hatalı çalışıyorsa (program hatayla bitmiyor), yanlış dosya adı kullanıldığında bir hata mesajı oluşturur. Eski stil "CvLoadImage" kullanmayı denedim, ancak aynı sonuç oluştu. Bunu düzeltmek konusunda bir fikri olan var mı?

cevap

22

Tamam, sorunu çözdüm ... Açma ve hata ayıklama OpenCV libs karıştırırken sorun ortaya çıkıyor. Proje özelliklerinde yolları ve libs adlarını değiştirdim ve "cv :: imread" gayet iyi çalışıyor.

+9

OpenCV \ lib dizininizde iki tür .lib dosyası bulmalısınız (örneğin: cv210.lib ve cv210d.lib). Çözümünüzü hata ayıklama modunda oluşturuyorsanız, proje özelliklerinde cv210d.lib dosyasına bağlanmanız gerekir; çözümünüzü sürüm modunda oluşturuyorsanız, cv210.lib dosyasına bağlanmalısınız. Aynı şey OpenCV/bin dorectory gelen dll dosyaları karşılık gelir. Umarım bir süre için cevap vermediği için üzgünüm ve umarım:/ – Marcin

+1

Bu doğru, ama neden bu oluyor? Çünkü diğer fonksiyonlar kütüphaneleri karıştırsa bile mükemmel çalışır. Neden bu işlev? http://stackoverflow.com/q/9125817/744859 –

+1

Sadece baş ağrısı bir çok kurtardı. Teşekkürler. – Aliostad

0

Bu davranış, bir ARGB bitmap görüntüsünü yüklemeye çalışırken (renkle yüklemeyi denediğimde) vardı. Bitmap'i RGB'ye (24bpp) dönüştürmek problemi çözdü.

+0

Lütfen kod açısından detaylandırır mısınız? – Maham