Ich bin relativ neu zu opencv und C++ und ich möchte etwas Hilfe auf meinem Code. Für mein Projekt arbeite ich gerade an einem einfachen Blob-Detektor, aber wenn ich es ausführe, bekomme ich "OpenCV Error: Bad-Flag (Parameter oder Strukturfeld) (Unbekannter oder nicht unterstützter Array-Typ) in cvGetMat, Datei C: \ Builds \ master_PackSlave-win64-vc12-shared \ opencv \ modules \ core \ src \ array.cpp, Zeile 2494 Drücken Sie eine beliebige Taste, um fortzufahren.. Ich bin ziemlich sicher, dass der Fehler entweder von der Mat im_with_keypoints; oder ein Problem in Linker ist. Unten ist mein Code. Wenn du mir helfen könntest, wäre das großartig.Bad Flag Fehler in opencv 3.0
- Update: lief ich dieses Programm durch den Debugger und kam mit diesem Fehler aus
- ich auch Visual Studio 2015
Dies ist das Bild, das ich versuche, bin mit Erkennung für Blobs:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/opencv.hpp"
#include <opencv2/core/core.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat im = imread("Eagle_coins.jpg", IMREAD_GRAYSCALE);
SimpleBlobDetector::Params params;
params.minThreshold = 10;
params.maxThreshold = 200;
params.filterByColor = true;
params.filterByCircularity = true;
params.minCircularity = 0.1;
params.maxCircularity = 0.28;
params.filterByConvexity = true;
params.minConvexity = 0.87;
params.maxConvexity = 2.8;
params.filterByInertia = true;
params.minInertiaRatio = 0.01;
params.maxInertiaRatio = 2;
vector<KeyPoint> keypoints;
Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create(params);
detector->detect(im, keypoints);
Mat im_with_keypoints;
drawKeypoints(im, keypoints, im_with_keypoints, Scalar(0, 0, 255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
imshow("white", im_with_keypoints);
waitKey(0);
}
Haben Sie versucht, es im Debugger auszuführen? Was hat dir das gesagt? Es gibt keine Notwendigkeit zu erraten. –
@Dan Mašek Ich lief das Programm über den Debugger und kam mit dem Laufzeitfehler –
Sie sollten in der Lage sein, auf den Debugger zu brechen, wenn der Fehler auftritt, und überprüfen Sie die Stack-Ablaufverfolgung, um zu sehen, wo genau das in Ihrem Code geschieht.Dann können Sie den Debugger verwenden, um die Argumente für das, was Sie aufrufen, weiter zu untersuchen, die fehlschlagen, um mehr Einblick in das Problem zu bekommen. | Es wäre nützlich, wenn Sie eine Kopie Ihres Eingabebildes anhängen, damit andere es reproduzieren können. | Eine weitere Sache, die Sie erwähnen können, ist, in welchem Modus Sie Ihr Programm kompiliert haben (Debug oder Release?) Und welche Bibliotheken (die Namen) Sie damit verlinkt haben. –