Nicht Lesen können Bild mit opencv2.3 imread
Hallo, ich bin versucht zu Lesen, ein Bild mit imread Funktion von opencv wie in dem link (http://opencv.itseez.com/doc/tutorials/introduction/display_image/display_image.html#display-image). Ich habe VS2010 mit 64-bit-windows-7. Jedes mal wenn ich es versuche bekomme ich die Fehlermeldung "keine Bilddaten", aber das Bild, das ich Lesen möchte ist im gleichen Ordner mit codes. Kann mir bitte jemand helfen, wie zu Lesen, ein Bild mit imread Funktion? Mein code ist wie folgt:
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
Mat image;
image = imread("al.jpg");
if(argc != 2 || !image.data )
{
printf("no image data \n");
return -1;
}
namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
imshow("Display Image", image);
waitKey(0);
return 0;
}
- Wenn du eine Antwort hilfreich, sicher sein, es zu akzeptieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihm können Sie das Bild laden mit
Dann können Sie konvertieren, das in cv::Mat mit,
Ich habe das gleiche problem unter WinXP mit VS2005 und OpenCV 2.3. Es scheint, dass der C++ interface von OpenCV ist nicht gut für Windows. Ich hatte auch Probleme mit
imread()
, welche zurückgegebenNULL
Daten.Habe ich das problem gelöst mit dem C-Schnittstelle von OpenCV statt. Für mehr info, überprüfen Sie Lesen und Schreiben von Bildern und Videos.
Nehmen Sie die
argc != 2
test. Sie sind nicht mit den übergebenen Argumenten des Programms, so ist es überflüssig. Und wennargc
ist in der Tat nicht eaual zu 2, Ihr Programm beendet wird, bevor Sie auch bekommen, um die!image.data
test.Edit: ich sah nur in das code-Beispiel, das Sie verknüpft. Es wird ein Bild geladen, dessen name übergeben wird, das Programm auf der Kommandozeile. Das ist, warum die
argc != 2
test ist da. Sie wollen auf jeden Fall nehmen die das raus, weil Sie wahrscheinlich nicht vorbei an der einen Dateinamen auf der Befehlszeile so Ihreargc
1 ist, so wird die Prüfung immer fehlschlagen.OpenCV bietet Unterstützung für die Bildformate Windows bitmap (bmp), portable image-Formaten (pbm, pgm, ppm), Sun raster (sr, ras).
Erlebe ich das gleiche problem, Dies kann von VS-Projekt Kompilierung in VS 10.
In visual studio 2010:
Gehen Sie auf Projekt --> Eigenschaften --> Character set --> die Verwendung von multi-byte anstelle von unicode.
Traf ich die gleichen Probleme wie Ihr. Die C++ - interface zur OpenCV2.3 hat nicht funktioniert und einige Funktionen zum konvertieren in C-Ausführung.
Aber endlich habe ich gefunden, was das ** problem ist.
Das ist, weil die Projekt-Eigenschaften, wenn Sie zusammengestellt deine OpenCV source code mit CMake, ist nicht dasselbe als Ihr Aktuelles Projekt Eigenschaften.(Kann sein, dass Ihre OpenCV dll und libs aus dem internet herunterladen, und diese können zusammengestellt werden, mit andere seltsame Eigenschaften.)
Also ich check meine CMake generiert OpenCV source code project fand ich die Projekt-Eigenschaft , C/C++-->Code-Generierung, die Runtime Library ist Multi-threaded Debug DLL(/MDd).
Dann ändere ich die entsprechende Eigenschaft in meinem aktuellen Projekt, und mein Projekt gut funktionieren. Zur gleichen Zeit, die andere C++ - Schnittstelle für OpenCV bugs gelöst ist gut.
Legen Sie die Common Language Runtime-Unterstützung (/clr) in Visual C++.
Es funktioniert.