logo - Android Bildverarbeitung Tutorial?




developer android toolbar (3)

OpenCV Android wird aufgrund der Benutzerfreundlichkeit auf einer Android-Plattform bevorzugt, obwohl es möglicherweise Einschränkungen gibt. Hier sind einige Hinweise, die helfen könnten:

1.Die beste Methode zum Lernen der Bildverarbeitung auf einer Android-Plattform ist die Implementierung. Versuchen Sie, die vorhandenen OpenCV4Android-Samples in Android Studio / Eclipse auszuführen und zu verstehen. Sie sind verfügbar unter https://github.com/joaopedronardari/OpenCV-AndroidSamples .

Die Beschreibung jedes Beispiels ist auf der OpenCVAndroid-Beispielseite verfügbar. Mixed Processing, Camera Control, Image Manipulationen und Color-Blob-Detection behandeln Vorverarbeitung und Bildmanipulation. Sie umfassen:

RGBA und GRAU Vorschau

Canny (Kantenerkennung)

Funktionen finden

Farbeffekte

Histogramme

Sepia

Sobel Filter

Zoomen

Pixelize

Posterisieren

Watershed-Transformation

Marker (Blob-Erkennung)

  1. Da Sie an einer Java-Plattform arbeiten, werden die OpenCV-Java-Tutorials nützlich sein.

  2. http://web.stanford.edu/class/ee368/Android/ hat Beispielprojekte.

4. Überprüfen Sie das Android Arsenal für Bildverarbeitungsbibliotheken.

Hinweis: Ein Mat-Objekt muss in ein Bitmap-Objekt konvertiert werden, um es auf dem Gerätebildschirm (ImageView) anzuzeigen.

https://code.i-harness.com

Kennt jemand gute Bildbearbeitung Tutorials für Android? Ich bin neu bei Android und ich programmiere eine App, die einen Effekt auf eine Bitmap ausübt. Ich kann viele Tutorials in Java finden, aber Android unterstützt nicht AWT. Ich möchte die Pixel in der Bitmap nur mit dem Android SDK manipulieren, z. B. Warping, Fisheye usw. Ich kann auf die Pixel zugreifen und ihre Farbe ändern, aber ich bin nicht gut mit Transformationen und nicht sicher, wo ich anfangen soll.


Sie können JavaCV auch auschecken, die Ihnen Java-Objekte mit Bindings zu opencv lib geben. Auf diese Weise brauchen Sie kein c / c ++ - Programm, Sie können alles direkt in Java machen und auf Funktionen von opencv zugreifen.

Google-Code-Projekt

Beantworten Sie Ihre Folgefrage:

Nehmen Sie zum Beispiel eine zylindrische Projektion: Sehen Sie sich das Bild an -

(Entschuldigung, ich darf keine Bilder posten) Das ist aus Szeliskis Buch ( http://szeliski.org/Book/ ). Die Beziehung, die du hier am Ende hast, ist

x'=s*tan⁻¹(x/f) 

und

y'=s*(y/sqrt(x²+f²)) 

Wenn f die Brennweite einer Kamera und s der Radius des Zylinders ist, können Sie f = s verwenden. Nun, um dies in Schleifen zu bringen, hier ist ein Pseudocode:

%% xMitte , yMitte are the coordinates for the point in the middle
for yNeu =1: height
   for xNeu =1: width
      dx = xNeu - xMitte ; %% X relativ to origin
      dy = yNeu - yMitte ; %% Y relativ to origin
      theta = atan(dx / f);
      h = dy / sqrt(dx ^2+f^2);
      x = (f * theta) + xMitte ;
      y = (f * h) + yMitte ;
      BildNeu (xNeu ,yNeu) = BildAlt (x, y);
   end
end

BildNeu ist das neue Bild, dieses Array hat die gleiche Größe wie BildAlt (das Originalbild).

Die Zeile mit BildNeu und BildAlt am Ende der inneren Schleife könnte wie folgt aussehen:

/** returns the color value of that pixel **/
CvScalar pixel = cvGet2D(originalImage, i, j);
/** writes the new color value of that pixel **/
cvSet2D(destinationImage, y, x, pixel);

Vielleicht werden Sie mit den OpenCV Java Bindings Erfolg haben. Ansonsten gibt es nicht wirklich etwas, von dem ich weiß, dass es helfen wird.





image-processing