Erste Schritte bei der Erstellung einer chroma-key-Effekt mit android-Kamera
Ich würde gerne zum erstellen eines chroma-key-Effekt mit der android-Kamera. Ich brauche keine Schritt für Schritt, aber ich würde gerne wissen, der beste Weg, zu entführen die android-Kamera und wenden Sie den Filter. Ich habe aus der API und habe nicht gefunden was super endgültigen wie dem Bearbeiten von Daten, die aus der Kamera kommen. Zuerst sah ich in der Verwendung einer Oberfläche, die textur, aber ich bin mir nicht ganz im klaren, wie es hilft, oder wie Sie es selbst benutzen. Dann überprüfte ich mit Hilfe einer GLSurfaceView, die vielleicht in die richtige Richtung, aber nicht wirklich sicher.
Auch meine Frage, wie würde ich beide behandeln Vorschau und speichern des Bildes? Würde ich das Bild mindestens zweimal auf? Einmal während der Vorschau und einmal beim speichern? Ich denke, das ist wohl die beste Lösung.
Schließlich würde es Sinn machen, erstellen Sie ein C/++ - wrapper für die Handhabung auf Geschwindigkeit zu optimieren?
Jegliche Hilfe würde sehr geschätzt werden. Ein link zu einigen Beispielen werden auch sehr geschätzt werden.
Dank.
- stackoverflow.com/questions/5583820/...
- Brauchen Sie mehr details in meiner Antwort?
- NÖ. Sorry für die späte Genehmigung, wusste nicht, meine Frage hatte Antworten bis heute. Dank einem Haufen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einzige wirkliche chance ist die Verwendung von openGL ES-und fragment-shader (wird es erfordern, mindestens openGL ES 2.0) und führen Sie die chroma-key-Effekt auf der GPU. Der shader selbst werden ganz einfach (google).
Aber um das zu tun, müssen Sie die display-Kamera-Vorschau mit callback. Sie implementieren müssen, um
Kamera.PreviewCallback
, erstellen Sie einen Puffer für Bilddaten und VerwendungsetPreviewCallbackWithBuffer
Methode. Sie können die grundlegende Idee von meinem Antwort zu einer ähnlichen Frage. Beachten Sie, dass es ein erhebliches problem mit der Leistung dieser benutzerdefinierten Kamera-Vorschau, aber es könnte funktionieren auf hardware, unterstützt ES 2.0.Zur Anzeige der Vorschau mit openGL, die Sie benötigen, um erweitern
GLSurfaceView
und auch umzusetzenGLSurfaceView.Renderer
. Dann binden Sie die Kamera-Vorschau-frame als textur mitglTexImage2D
einige einfache Rechteck und der rest wird von Shadern. Sehen Sie, wie die Verwendung von Shadern in ES hier oder wenn Sie noch keine Erfahrung mit Shadern, dieses tutorial könnte ein guter Anfang sein.Zu der anderen Frage: speichern Sie das aktuelle Bild aus der Vorschau, aber die Vorschau hat eine geringere Auflösung als ein Bild genommen, so dass Sie wahrscheinlich wollen, um ein Bild zu machen und dann verarbeiten Sie separat (Sie können verwenden die gleichen shader für Sie).
Als für C++, es ist eine Menge zusätzlichen Aufwand mit fraglichem Ausgang. Aber es kann die Leistung verbessern, wenn richtig gemacht. Versuchen Sie, um dies zu überprüfen Artikel, es zu einem ähnlichen Thema, es beschreibt die Verwendung von NDK zu verarbeiten-Kamera-Vorschau und zeigt Sie in openGL. Aber wenn Sie denken über das tun der chroma-key-Effekt in C++, wäre es deutlich langsamer als Shader.
Sie können dies überprüfen, Bibliothek: https://github.com/cyberagent/android-gpuimage.
Es bietet ein framework zu tun Bildverarbeitung auf dem Gerät mit der GPU mit GL-Shader.
Es ist auch eine Beispiel zeigt, wie die Nutzung der Bibliothek mit einer Kamera.
Es ist ein Chroma-Key-Projekt auf Google-Code: http://code.google.com/p/chroma-key-project/ Es enthält eine Möglichkeit zum Bilder hochladen, die sind token mit chroma-key: