• IT-Karriere:
  • Services:

OpenCV übernimmt die Gesichtserkennung

Dass die Gesichtserkennung in einem eigenen Thread läuft, hat einen einfachen Grund: Sie ist rechenzeitintensiv, die angelieferten Bilder der Kamera werden gepuffert. Liefe das Holen des Bildes und dessen Auswertung im gleichen Thread, würden wir beim nächsten Schleifendurchgang ein Bild unbekannten Alters aus dem Puffer erhalten. Mit capture.grab() leeren wir stets den Puffer und sorgen dafür, dass im Thread mit capture.retrieve() immer nur das aktuelle Bild ausgewertet wird:

Stellenmarkt
  1. AKKA Deutschland GmbH, München
  2. über duerenhoff GmbH, Raum Frankfurt

  1. void *faceThread(void *arg)
  2. {
  3. Mat img;
  4. while(1) {
  5. if(capture.retrieve(img)) {
  6. checkFace(img);
  7. }
  8. }
  9. }

Die eigentliche Erkennung läuft in der Funktion checkFace(). Diese Funktion sah ursprünglich so aus:

  1. void checkFace(Mat img) {
  2.  
  3. ...
  4. cvtColor(img, gray, CV_BGR2GRAY);
  5. equalizeHist( gray, gray);
  6.  
  7. face_cascade.detectMultiScale(small, faces,
  8. 1.1, 2, CV_HAAR_SCALE_IMAGE);
  9.  
  10. if(faces.size() > 0) {
  11.  
  12. int p = faces[0].x + (faces[0].width/2);
  13. int pd = map_pixel_to_deg(p);
  14. servo(180 - pd);
  15. }
  16.  
  17. }

Das Kamerabild wird in ein Graustufenbild umgewandelt, die Farbverteilung im Bild normalisiert und schließlich auf Gesichter geprüft. Die detectMultiScale()-Methode liefert für jedes gefundene Gesicht ein Rect-Objekt zurück. Es enthält die xy-Koordination eines Rechtecks sowie dessen Höhe und Breite. Jedes Rechteck beschreibt also, wo im Bild ein Gesicht gefunden wurde. Wir ermitteln auf Basis dieser Daten dann die x-Koordinate der Mitte des Rechtecks. Sie wird in eine Grad-Angabe (0 - 180 Grad) umgerechnet und der Funktion servo() zur Ansteuerung des Servos übergeben.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Programmieren in C++ und mit MRAADer Edison beeindruckt 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11. 10
  12.  


Anzeige
Hardware-Angebote
  1. (u. a. Asus Rog Strix X570-F + Ryzen 7 3700X für 555,00€, Asus Tuf B450-Plus + Ryzen 7 2700 für...
  2. 419,00€ (Bestpreis!)
  3. (u. a. Aorus Pro für 219,90€, Aorus Pro WiFi für 229,90€, Aorus Elite für 189,90€)
  4. täglich neue Deals bei Alternate.de

derdiedas 21. Nov 2014

Na ja - das Edison/Arduino Gespann ist nun so viel kleiner nicht. Das reine Edison Modul...

_speedy_ 21. Nov 2014

und vom USB-Stick? Von SD wäre natürlich genial und vielleicht besser Intel hier ja noch...

Zwangsangemeldet 20. Nov 2014

Irgendwie ist die Betonung des Sprechers im Video ... hmm, naja, seltsam. *Sehr* seltsam...


Folgen Sie uns
       


iPhone 11 Pro Max - Test

Das neue iPhone 11 Pro Max ist das erste iPhone mit einer Dreifachkamera. Dass sich diese lohnt, zeigt unser Test.

iPhone 11 Pro Max - Test Video aufrufen
Bosch-Parkplatzsensor im Test: Ein Knöllchen von LoRa
Bosch-Parkplatzsensor im Test
Ein Knöllchen von LoRa

Immer häufiger übernehmen Sensoren die Überwachung von Parkplätzen. Doch wie zuverlässig ist die Technik auf Basis von LoRa inzwischen? Golem.de hat einen Sensor von Bosch getestet und erläutert die Unterschiede zum Parking Pilot von Smart City System.
Ein Test von Friedhelm Greis

  1. Automated Valet Parking Daimler und Bosch dürfen autonom parken
  2. Enhanced Summon Teslas sollen künftig ausparken und vorfahren

Red Dead Redemption 2 für PC angespielt: Schusswechsel mit Startschwierigkeiten
Red Dead Redemption 2 für PC angespielt
Schusswechsel mit Startschwierigkeiten

Die PC-Version von Red Dead Redemption 2 bietet schönere Grafik als die Konsolenfassung - aber nach der Installation dauert es ganz schön lange bis zum ersten Feuergefecht in den Weiten des Wilden Westens.

  1. Rockstar Games Red Dead Redemption 2 belegt 150 GByte auf PC-Festplatte
  2. Rockstar Games Red Dead Redemption 2 erscheint für Windows-PC und Stadia
  3. Rockstar Games Red Dead Online wird zum Rollenspiel

Kognitive Produktionssteuerung: Auf der Suche nach dem Universalroboter
Kognitive Produktionssteuerung
Auf der Suche nach dem Universalroboter

Roboter erledigen am Band jetzt schon viele Arbeiten. Allerdings müssen sie oft noch von Menschen kontrolliert und ihre Fehler ausgebessert werden. Wissenschaftler arbeiten daran, dass das in Zukunft nicht mehr so ist. Ziel ist ein selbstständig lernender Roboter für die Automobilindustrie.
Ein Bericht von Friedrich List

  1. Ocean Discovery X Prize Autonome Fraunhofer-Roboter erforschen die Tiefsee

    •  /