Bad flag Fehler in OpenCV nach dem werfen einer Instanz von "cv::Exception' . Nicht unterstützte array-Typ in cvGetMat
Ich bin neu in OpenCV , und versuchen zu Lesen die Abfolge der Bilder in einem Ordner. Mein code ist wie folgt :
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
using namespace std;
void loadImage(Mat image,int number)
{
char filename[100];
strcpy(filename, "/home/folder1/imagefolder/");
char frameNo[10];
sprintf(frameNo, "%08i", number);
strcat(filename, frameNo);
strcat(filename, ".png");
cout<< filename;
image = imread(filename);
if (image.empty()) //check whether the image is loaded or not
{
cout << "Error : Image not loaded." << endl;
}
}
int main()
{
Mat image;
int nImages=8;
for (int i = 1; i < nImages; i++)
{
loadImage(image,i);
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
imshow( "Display Image", image );
waitKey(100000);
return 0;
}
}
Wird es kompiliert, Aber beim ausführen der ausführbaren Datei gibt es folgenden Fehler:
OpenCV Error: Bad flag (parameter oder Struktur-Feld) (nicht erkannten oder nicht unterstützten array-Typ) in cvGetMat, file /home/vuadmin/OpenCV-2.3.1/modules/core/src/array.cpp, Zeile 2482
kündigen, genannt nach dem werfen einer Instanz von "cv::Exception'
was (ist): /home/vuadmin/OpenCV-2.3.1/modules/core/src/array.cpp:2482: Fehler: (-206) nicht erkannten oder nicht unterstützten array-Typ in der Funktion cvGetMat
Aborted (core dumped)
Bitte helfen Sie mir herauszufinden, die Fehler.
Ich auch ausprobiert, die andere Methode, wie Sie im
OpenCV: Lesen der Bild-Serie aus einem Ordner
aber in meinem Fall zeigt es nur das erste Bild .
InformationsquelleAutor Prakruti | 2013-12-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehe ich mehrere Fehler in deinem code :
Ihren Prototyp
void loadImage(Mat image,int number)
macht eine Kopie des cv::Mat Bild, so dass nach dem Aufruf dieser Funktionimage
leer ist. Stellen Sie das Bild durch Verweisin diesem Fall in
imshow( "Display Image", image );
image
argument kann nicht leer sein. das kann dazu führen, Ihre openCV errorEiner anderen Sache in Ihrem Einstiegspunkt des Programms, Sie machen eine
return 0;
im inneren der Schleife, sodass das Programm beenden mit code-Wert 0 bei der ersten iteration. Setzen Sie den return nach der Schleife. Btw, sollten Sie "öffnen" Sie Ihre Fenster nur einmal und nicht bei jeder iteration, aber ich glaube nicht, dass dadurch alle Fehler.Müssen Sie überprüfen Sie die Gültigkeit Ihres Bildes nach Ihrem Anruf von
loadImage(image, i)
weil innerhalb der Funktion eine Fehlermeldung gedruckt wird auf die standard-Ausgabe, sondern in der Schleife, die du nicht machen, keine Kontrolle über das BildInformationsquelleAutor Marcassin
Ich hatte den gleichen Fehler in Java mit OpenCV. Ich erkannte, dass das problem nicht die Bilder oder frames, ich war mit, aber die HaarCascade-Datei. Ich würde versuchen, verschiedene cascade-Dateien (Sie finden Sie auf OpenCV website), sowohl Haar-Kaskade-Dateien und LBP-cascade-Dateien.
Hoffe, das hilft. Cheers
InformationsquelleAutor TheoreticallyNick