Webcam

Raspberry Pi

Hier möchte ich euch zeigen wie ihr eine Webcam an euer Pi anschließt und wie ihr sie anschließend nutzt.
Für meine Versuche verwende ich eine Kinect von Microsoft, aber die Schritte lassen sich auf jede, vom Raspberry erkannten, Webcam übertragen.

-> Setup:

Für meine Versuche verwende ich das Modul python-opencv, welches so installiert wird:

Nachdem das Modul installiert wurde kann die Webcam angeschlossen werden.
Um zu überprüfen ob die Webcam funktioniert gebt ihr

ein. Wenn ein Gerät namens video0 angezeigt wird, kann die Webcam genutzt werden:

Webcam(1)

-> Das erste Programm:

Zeit um das erste Python Programm für die Webcam zu schreiben.
Das Programm soll das aktuelle Bild der Webcam aufnehmen und speichern.
Durch das Modul opencv wird uns dabei viel Arbeit abgenommen, da es den Zugriffprozess auf die Webcam und der Bildbearbeitung stark vereinfacht.
Als erstes wird mit der Zeile

die Webcam geöffnet und unter Kamera instantiiert. Die 0 steht dabei für die Nummer der Webcam, sprich wenn die Kamera als /dev/video1 erkannt wird, muss dort eine 1 stehen.
Nach dem öffnen kann mittels Kamera auf die Kamera zugegriffen werden.
Ein Bild wird mittels

geschossen und der empfangene Bildstream wird dann unter Bild gespeichert.
Das gespeicherte Bild wird anschließend mit den Zeilen

auf dem Desktop als Bild.jpg gespeichert und kann anschließend geöffnet werden:

-> Die Raspberry Pi Kamera als Webcam nutzen:

Schauen wir uns mal an wie die Raspberry Pi Kamera so eingerichtet werden kann, dass sie z.B. unter /dev/video0 erreichbar ist.
Damit die Kamera so verwendet werden kann, muss erst einmal ein Treiber installiert werden, da auf dem Betriebssystem keine Software aktiv ist, die die Kamera steuert.
Als erstes muss die Datei /etc/apt/sources.list editiert werden, indem die Zeile

eingefügt wird.

Webcam(2)
Danach muss der entsprechende Video4Linux Treiber heruntergeladen und installiert werden:

Jetzt ist die Kamera unter /dev/video0 verfügbar:

Webcam(3)
Schauen wir mal ob wir jetzt auch ein Foto machen können….
Mit Hilfe des Befehls

werden die Daten aus der Kamera direkt in die Datei Foto.jpg kopiert. Auf diese Weise bekommt man sehr einfach ein Foto der Webcam.

Webcam(4)
Und schon ist die Raspberry Pi Kamera bereit als Standard Videogerät genutzt zu werden.

-> Eine Webcam zur Schrifterkennung nutzen:

Nun wollen wir die Webcam mal praktisch einsetzen, indem wir eine Schrifterkennung realisieren.
Für die Schrifterkennung nutze ich ein Open Source Tool namens Tesseract, welches ich als erstes installieren muss:

Die Software liest ein vorhandenes Foto aus und schreibt den erkannten Text in eine Textdatei. Um einen Auslesevorgang zu starten, reicht folgender Befehl:

Zum testen habe ich mir mal ein Foto gemacht und dieses anschließend ausgelesen:

Die Ausgabe sieht sehr vielversprechend aus:

Webcam(5)
An für sich funktioniert die Software auch ganz gut. Wenn trotzdem mal Ausleseprobleme bestehen sollten, liegt es mit sehr großer Wahrscheinlichkeit am Licht bzw. am Kontrast, sodass die Software keinen Text erkennen kann.
Dazu ein Beispiel:

Webcam(6)
Grundsätzlich sollten glänzende Oberflächen vermieden werden und es sollte darauf geachtet werden, dass die Oberflächen möglichst kontrastreich sind.

 

Dokumentation:

 

-> Zurück zu den Basteleien mit dem Raspberry Pi

17 thoughts on “Webcam
  1. Hi Daniel

    versuche gerade eine Webcam anzusprechen.
    Habe python-opencv installiert und die Webcam angeschlossen.
    Sie wird wie beschrieben erkannt (video0).
    Die Datei Kamera.py habe ich kopiert und gestartet.
    Leider kommt in der Python Shell folgende Fehlermeldung:
    ImportError: No module named cv
    Was habe ich falsch gemacht ?

    Gruß Fritz

    • Hallo Fritz,

      schau dir mal das Beispielprogramm, welches unten verlinkt ist, an.
      Hast du am Anfang von deinem Programm „import cv“ geschrieben?

      Gruß
      Daniel

      • Hey Daniel,
        natürlich habe ich „import cv“ geschrieben, sonst stände ja nicht
        ImportError, offenbar findet das Programm nicht das Modul cv.
        Könnte es wieder mal an Python 3 liegen. Werde es heute mal mit
        Python 2 probieren.

        Gruß Fritz

          • Hey,

            ja Python 2 ist als Standard definiert (habe ich irgendwo mal gelesen)….glaube du musst das irgendwie umstellen, damit er Python 3 nimmt und auch dafür die Module dafür verwendet.
            Wie das geht weiß ich allerdings nicht, da ich nur Python 2.7 verwende.

            Gruß
            Daniel

  2. Jow Daniel,
    warum kompliziert wenns auch einfach geht…
    Werde in zukunft alles was mit Python 3 nicht geht
    einfach mit Python 2.7 ausprobieren.

    Gruß Fritz

    • Noch eine Ergänzung, mit folgendem Programm kann man Live-Bilder
      der Webcam sehen:

      import cv

      KAMERA_NR = 0

      cam = cv.CaptureFromCAM(0)
      taste = 0
      while taste ord(„q“):
      bild = cv.QueryFrame(cam)
      cv.ShowImage(„Livebild“, bild)
      taste = cv.WaitKey(2)

      Mit Taste „q“ wird das Progeamm beendet.

      Gruß Fritz

      • Korrektur:
        Nach „while…“ müssen folgende 3 Zeilen versetzt sein, also:
        while taste ord(“q”):
        bild = cv.QueryFrame(cam)
        cv.ShowImage(“Livebild”, bild)
        taste = cv.WaitKey(2)

          • Hey Daniel,
            wenn ich mit deinem Programm einen Schnappschuß mache
            ist das Blid unterbelichtet:
            siehe Schnappschuß
            Das Live-Bild dagegen ist normal:
            siehe Live-Bild
            Woran kann das liegen?
            Meine Webcam: Pearl SC 834
            Hast du ne Ahnung?

            Gruß Fritz

          • Hallo Fritz,

            hast du das Livebild mit einer Zusatzsoftware gemacht? Oder wie hast du das erstellt?

            Gruß
            Daniel

          • Hallo Daniel,

            das Livebild habe ich kurzfristig in dem Livebild-Programm aufgenommen, einfach alle 2 Sekunden ein Bild speichern.
            Also im Prinzip deine Software ins Liveprogramm integriert.
            Dann mit dem Raspi Bildbetrachter angesehen und gespeichert.
            Ist halt ein bisschen umständlich als Dauerlösung.

            Gruß Fritz

          • Hey,

            besteht das Problem auch wenn du andere Webcams nimmst?
            Weil wenn es an der Webcam liegt ist die einzige Möglichkeit wenn du versuchst das Bild künstlich heller zu machen:

            config = {
            cv.CV_CAP_PROP_BRIGHTNESS: 50,
            cv.CV_CAP_PROP_CONTRAST: 50,
            cv.CV_CAP_PROP_SATURATION: 50,
            }

            for param, value in config.iteritems():
            cv.SetCaptureProperty(Kamera, param, value)

            Gruß
            Daniel

          • Hallo Daniel,

            es hat mir keine Ruhe gelassen, aber jetzt habe ich die Lösung gefunden:
            for i in range (8):
            –>Bild = cv.QueryFrame(Kamera)
            Man muß der Kamera Zeit lassen, dann wird das Blid
            korrekt wiedergegeben, offenbar war das Bild zu kurz belichtet und deshalb zu dunkel. Wie auch immer,
            jetzt klappts…

            Gruß Fritz

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.