opencv 3, blobdetection, Die Funktion/das feature ist nicht implementiert () in detectAndCompute
Ich habe ein problem mit opencv 3:
Ich möchte an einem feature-Detektor, SimpleBlobDetector, über die Verwendung von filtern, die von Konvexität und Rundheit.
Aber wenn ich versuche den code auszuführen, werden die folgenden Fehler erfasst wird:
Die Funktion/das feature ist nicht implementiert () in detectAndCompute
Dann stürzt die Anwendung ab.
Suchte ich nach Informationen im internet ohne jede relevante Antwort.
Ich denke, dass die 3. version von Opencv verantwortlich sein könnte für diesen Fehler, weil ich weiß, dass ich die Detektor-der gute Weg (ich habe versucht, genau wie die offiziellen opencv tutorial) und ich bemerkte, als die SimpleBlobDector geändert wurde, für die Dritte version.
Mit Haltepunkt, ich weiß, dass die folgende Zeile abstürzt:
Detektor.erkennen(Grau, Eckdaten);
Den SimpleBlobDetector erstellt wurde (mit der create Funktion) und konfiguriert, das graue Bild nicht leer ist und die Eckdaten Vektor muss nicht ausgefüllt werden, bevor die Detektion.
Benutze ich opencv 3.0.0, erstellt, in MinGW mit QtCreator. Die opencv-Behandlung ist nicht gestartet aus dem Haupt-thread.
Tat jemand anderes haben die gleiche problem?
Ich wäre dankbar, wenn ich einen patch oder eine andere Lösung mit einer anderen Klasse. Ich wirklich brauchen, um zu verwenden, Konvexität, um meine filter blobs und die anderen Detektoren, die ich gefunden (FeatureDetector oder Flotten) nicht konfigurierbar und nur Eckdaten, die nicht über die Fläche oder die fülle von Parametern zu berechnen Konvexität.
Vielen Dank im Voraus
- Sie können den Freigabe-code? Wie groß ist dein Bild? Für mich funktioniert es in der OpenCV-3.0.0 - Welche version hast du gebaut? Github oder Beta?
Du musst angemeldet sein, um einen Kommentar abzugeben.
dieses sieht wie es gelöst ist, aber vielleicht hilft es jemand anderes. Ich hatte das gleiche problem. Ich erstellte blob Detektor wie diese:
Endete dies mit dem Fehler:
The function/feature is not implemented () in detectAndCompute
.Aber wenn ich versuchte es so:
Jetzt funktioniert alles wie erwartet.
Es ist wirklich seltsam, und wenn jemand weiß, warum ist arbeiten so lass es mich bitte wissen.
Dies ist, weil Sie verwenden OpenCV 3.X, wo (als dies geschrieben wurde), alle Beispiele finden Sie online verwenden OpenCV 2.X.
Wenn Sie Graben um, aber finden Sie den übergang guide:
http://docs.opencv.org/master/db/dfa/tutorial_transition_guide.html#tutorial_transition_hints_headers
Denen sagt, Sie brauchen, um zu verwenden:
Statt:
So, in diesem Fall benötigen Sie:
Oder:
Wenn Sie haben params.
Ptr<SimpleBlobDetector>
ein raw-pointer "töten sich" sofortDanke für die Antwort.
Ich benutze erkennen (wie ich schon sagte in meiner vorherigen Nachricht). Ich denke, die detect-Funktion verwendet wahrscheinlich detectAndCompute.
Den Mangel der Deskriptor kann das problem in der Tat, denn ich hatte bereits ein gleichwertiges problem mit Emgu (die C# - version von opencv), bis ich fand ein Entwickler-Hinweis zu sagen, dass die Methode nicht korrigiert und noch den Deskriptor war die Ursache.
Für andere die das gleiche problem haben, habe ich endlich genutzt, cv::findContours statt des blob-Detektor. Es funktioniert viel besser, ohne Probleme.
Ersetzen Sie die Konvexität der Erkennung, können Sie bewerten, Sie mit der fülle (Form-Bereich /bounding-box-Bereich). Zu ersetzen, die zirkularität, verwenden Sie die folgende Formel:
Ich hoffe, dass diese Hoffnung anderen Menschen.
Verwenden Sie einfach erkennen, (...) und nicht detectAndCompute(...). Es gibt keine feature-Deskriptor definiert blob-Erkennung.
Finden Sie hier:
https://stackoverflow.com/a/11079868/1611317
detector.detect(…)
Linie.