26.02.2014 Aufrufe

smart developer Ein Code für alle (Vorschau)

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Entwicklung<br />

Bada: Face Recognition App<br />

Osp::Ui::Form abgeleitete Klasse Form1, die<br />

die Ergebnisse anzeigt. Beide Klassen kommunizieren<br />

über einen Listener mit dem<br />

Namen RecognizerThreadListener. <strong>Ein</strong>e<br />

Hilfsklasse mit dem Namen MyFaceInfo enthält<br />

Zeiger auf einen Dateinamen und auf die<br />

Informationen eines darin gefundenen Gesichts<br />

in der entsprechenden Datei. Mithilfe<br />

dieser Klasse können Sie später die Ergebnisse<br />

wieder einer Datei zuordnen.<br />

Die App durchforstet das Dateisystem<br />

eines Gerätes oder des Simulators nach Bilddateien,<br />

sucht darin Gesichter und vergleicht<br />

deren Ähnlichkeit miteinander. Der Beispielcode<br />

wurde mit dem bada SDK 1.2.1 implementiert<br />

und sowohl im Simulator als auch<br />

auf einem Wave S8500 getestet. Um die App<br />

im Simulator testen zu können, müssen Sie<br />

Bilder in das Dateisystem des Simulators<br />

laden. Kopieren Sie die Bilder in den Pfad<br />

/bada//<br />

Model//Simulator/FS/Win32FS/<br />

Media/Images und passen Sie gegebenenfalls<br />

den Pfad an, der in RecognizerThread.h als<br />

Define IMAGE_DIRECTORY_PATH definiert<br />

wurde. Auf dem Gerät werden Bilder von<br />

Bada in den Ordnern /Media/Images/ und /<br />

Storage/Media/Images/ gespeichert. Verändern<br />

Sie den Define nicht, dann erwartet die<br />

App die zu analysierenden Bilder im Ordner<br />

/Media/Images/Fotos0001/.<br />

Bevor Sie mit der Implementierung der<br />

App beginnen, müssen Sie auf dem Bada<br />

Developer Portal [2] ein Manifest erstellen.<br />

Wählen Sie bei der Erstellung des Manifestes<br />

das Privileg IMAGE aus. Damit erlauben Sie<br />

der App, Bilder decodieren zu dürfen. Öffnen<br />

Sie das Bada-SDK und erstellen Sie mit dem<br />

heruntergeladenen Manifest ein neues Projekt.<br />

Um den <strong>Code</strong> so einfach wie möglich zu<br />

halten, legt die App wenig Wert auf einfache<br />

Bedienung oder ein besonders hübsches Aussehen.<br />

Interessante Informationen über die<br />

Gesichtserkennung gibt die App über<br />

AppLogDebug() aus. Sie lassen sich so in der<br />

Debug Perspective von Eclipse im Window<br />

Output betrachten.<br />

<strong>Code</strong> schreiben<br />

Beginnen Sie mit der Implementierung der<br />

Klasse RecognizerThread. Sie führt die Gesichtserkennung<br />

aus und kommuniziert die<br />

Ergebnisse über einen Listener zu der Klasse,<br />

die die UI implementiert. Konstruktor und<br />

Destruktor der Klasse bleiben leer. In der<br />

Init()-Methode zur Initialisierung einer Instanz<br />

der Klasse rufen Sie Construct() auf die<br />

Instanz auf und definieren den Thread als<br />

Worker-Thread. Implementieren Sie die Methode<br />

SetListener(), mit der Sie später den<br />

Listener der Instanz setzen, über den die Ereignisse<br />

der Gesichtserkennung kommuniziert<br />

werden.<br />

<strong>Ein</strong> Thread muss drei Methoden implementieren:<br />

OnStart() ruft Bada auf, wenn<br />

der Thread gestartet wird, OnStop(), wenn<br />

der Thread terminiert, und in Run() verrichtet<br />

ein Worker-Thread seine Arbeit. Listing 1<br />

zeigt die vollständige Definition von RecognizerThread.<br />

Die Arbeit des Threads ist im F<strong>alle</strong> des Beispielcodes<br />

in vier Phasen aufgeteilt. In der<br />

ersten Phase wird der FaceRecognizer analysiert<br />

und konfiguriert. In der zweiten Phase<br />

wird der Ordner /Media/Images/Fotos0001/<br />

nach Bilddateien durchsucht. In der dritten<br />

Abb. 1: Im ersten Schritt durchsucht<br />

die App sämtliche Bilder eines gegebenen<br />

Verzeichnisses und sucht<br />

darin nach Gesichtern.<br />

Zuverlässiges Wissen <strong>für</strong> Entwickler<br />

openbook<br />

online!<br />

Juli 2011<br />

im Handel!<br />

Java ist auch eine Insel<br />

Android 3<br />

Silverlight 4<br />

Das Praxisbuch ActionScript 3<br />

1.480 S., 9. Auflage 2011, mit DVD, 49,90 €<br />

www.GalileoComputing.de/2254<br />

550 S., 2011, mit DVD, 39,90 €<br />

www.GalileoComputing.de/2516<br />

1.178 S., 2010, mit DVD, 49,90 €<br />

www.GalileoComputing.de/2126<br />

702 S., 2010, mit DVD, 39,90 €<br />

www.GalileoDesign.de/2336<br />

» www.facebook.com/GalileoPressVerlag<br />

» www.twitter.com/Galileo_Press<br />

www.GalileoComputing.de/Programmierung

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!