Ich bin ein Anfänger in openCV4android und ich möchte, wenn möglich, Hilfe bekommen . Ich versuche mit meiner Android-Handy-Kamera farbige Dreiecke, Quadrate oder Kreise zu erkennen, weiß aber nicht, wo ich anfangen soll. Ich habe OReilly Learning OpenCV Buch gelesen und ich habe etwas über OpenCV gelernt.
Hier ist was ich machen möchte:
1- Erhalten Sie die Tracking-Farbe (nur die Farbe HSV) des Objekts durch Berühren des Bildschirms - Ich habe dies bereits getan, indem ich das Beispiel des Farbklecks aus dem Beispiel von OpenCV4android verwendet habe
2- Finden Sie auf der Kamera Formen wie Dreiecke, Quadrate oder Kreise basierend auf der zuvor ausgewählten Farbe.
Ich habe gerade Beispiele gefunden, wie man Formen in einem Bild finden kann. Was ich machen möchte, ist das Finden der Kamera in Echtzeit.
Jede Hilfe wäre willkommen.
Beste Grüße und einen schönen Tag.
Wenn Sie planen, NDK für Ihre opencv-Sachen zu implementieren, dann können Sie die gleiche Idee verwenden, die sie in OpenCV Tutorial 2-Mixedprocessing verwenden.
%Vor%Auf der nativen Seite
%Vor%Da alle Manipulationen mit Zeigern durchgeführt werden, müssen Sie vorsichtig sein. hoffe das hilft
Wenn Sie das OpenCV-Backprojection-Tutorial überprüfen, tun Sie dies was du suchst (und ein bisschen mehr).
Rückprojektion:
"In Bezug auf Statistiken, die in der BackProjection gespeicherten Werte Matrix repräsentiert die Wahrscheinlichkeit, zu der ein Pixel in einem Bild gehört die Region mit der ausgewählten Farbe. "
Ich habe dieses Tutorial nach OpenCV4Android (2.4.8) konvertiert, wie Sie es gesucht haben, es verwendet kein Android NDK. Sie können alle Code hier bei Github sehen.
Sie können diese Antwort auch für weitere Details überprüfen
Obwohl es ein bisschen spät ist, möchte ich gerne einen Beitrag zu dieser Frage leisten.
1- Erhalten Sie die Tracking-Farbe (nur die Farbe HSV) des Objekts durch berühre den Bildschirm - das habe ich bereits mit dem Farbklecks getan Beispiel aus dem OpenCV4android Beispiel
Implementiere OnTouchListener zu deiner Aktivität
onTouch-Funktion
%Vor%mRGBA ist ein mattes Objekt, das in onCameraViewStarted als
initiiert wurdemRgba = neue Matte (Höhe, Breite, CvType.CV_8UC4);
Und für den zweiten Teil:
2- Finden Sie auf der Kamera Formen wie Dreiecke, Quadrate oder Kreise basierend auf der vorher gewählten Farbe.
Ich habe versucht, die ausgewählte Konturenform mit approxPolyDP
herauszufinden %Vor%Dies wurde an der Funktion onCameraFrame gemacht, nachdem ich die Konturliste erhalten habe
Wenn die Länge des Punktfeldes mehr als 5 beträgt, ist es normalerweise ein Kreis. Aber es gibt einen anderen Algorithmus, um einen Kreis und seine Attribute zu erhalten.