Computer Vision ist der Einstieg in KI. Mit dem Raspberry Pi lassen sich handliche Geräte bauen, die mit entsprechenden Bibliotheken erstaunliche Dinge tun können. Z.B. Bienen oder LKW zählen. Als Basis lohnt der Blick auf openCV. Mittlerweile ist die Installation recht einfach.
Die Grundinstallation für openCV
Als Basis dient ein Raspberry Pi 3 B mit dem Betriebssystem Raspbian Stretch inkl Desktop, aber ohne Softwareschnickschnack. Dann passt alles so gerade auf eine 8 GB SD-Karte. Eine schnelle Karte sei empfohlen. Ebenso ist eine Raspberry Pi Kamera sinnvoll.
Die Installation erfolgt in vier Schritten:
- Raspbian aufsetzen
- Verbindung zum Raspberry Pi Desktop mit VNC aufbauen
- openCV für Python installieren
- Mit einem kleinen Python-Script die Installation testen.
Für den späteren Betrieb ist es sicher sinnvoll, auf den Desktop zu verzichten und den Raspberry headless einzurichten (Das empfehle ich meinen Studenten grundsätzlich). Bei der Entwicklung und den ersten Tests ist für Video allerdings ein Fernzugriff auf eine grafische Benutzungsoberfläche hilfreich. Daher wird hier auf VNC gesetzt.
Raspbian aufsetzen
Zunächst laden Sie das das 3,4 GB große Image (Raspbian Stretch with desktop) und entpacken es:
https://www.raspberrypi.org/downloads/raspbian/
Auf einem Windows Rechner laden Sie WinDiskImager und brennen die SD-Karte. Auf einem Mac gelingt dies am Besten in der Konsole.:
df -h
sudo unmount disk2s1
sudo dd of=/dev/rdisk2 if=Downloads/raspbian.img bs=1m
Der Brennprozess dauert etliche Minuten.
Auf der SD-Karte finden der Rechner eine Partition „boot“. In dieser partition erzeugen Sie eine leere Datei ssh mit
nano ssh
und eine Datei
nano wpa_supplicant.conf
mit folgendem Inhalt:
# Datei wpa_supplicant.conf in der Boot-Partition (Raspbian Stretch)
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="wlan-bezeichnung"
psk="passwort"
key_mgmt=WPA-PSK
}
Eine detaillierte Beschreibung finden Sie unter
https://pi-buch.info/wlan-schon-vor-der-installation-konfigurieren
Danach bindet sich der Raspberry in Ihr WLAN ein und ist über SSH erreichbar.
Die IP Adresse des Raspberrys finden Sie mit einem Tool wie Fritz Box WLAN auf dem Smartphone oder in der Konsole des Mac mit
sudo arp-scan -l
Sie können sich nun mit SSH direkt auf den Raspberry schalten mit Ihrer IP-Adresse
ssh pi@192.168.1.103
Die erste Aktion auf dem Raspberry sollte dann die Aktualisierung sein mit
sudo apt-get update sudo apt-get upgrade
Remote Desktop einrichten
Sie benötigen zwei Komponenten: einen Serverprozess auf dem Raspberry und einen VNC-Client auf Ihrem Rechner.
Auf dem Raspberry ist unter Stretch schon der RealVNC Server installiert. Er muss nur mit
sudo raspi-config
eingeschaltet werden.
Als VNC-Client auf dem Mac funktionierte bei mir problemfrei RealVNC, alle anderen Lösungsvorschläge im Internet hakelten.
https://www.realvnc.com/de/connect/download/viewer/macos/
Eine detailliertere Beschreibung gibt es unter
https://www.elektronik-kompendium.de/sites/raspberry-pi/2111301.htm
Es empfiehlt sich, parallel ein Terminal mit SSH-Verbindung und eine Remote Desktop Sitzung gleichzeitig offen zu halten. So können im Terminal Scripte erstellt und gleich im Desktop getestet werden.
openCV installieren
Bislang war die Installation von openCV ein Abenteuer für Fortgeschrittene, mit etlichen vorbereitenden Schritten musste openCV aus den Quellen selber kompiliert werden. Eine (nicht einfache) Anleitung, wie das geht finden Sie hier:
Zumindest für Python 3 gibt es inzwischen eine einfache Alternative, die direke Installation mit PIP.
Die Anleitungen im Internet führten bei mir nicht direkt zum Erfolg, es war folgende Befehlskette erforderlich:
pip install --upgrade pip sudo apt install libatlas3-base libwebp6 libtiff5 libjasper1 libilmbase12 libopenexr22 libilmbase12 libgstreamer1.0-0 libavcodec57 libavformat57 libavutil55 libswscale4 libqtgui4 libqt4-test libqtcore4 sudo pip3 install opencv-python
Danach sollte ein interaktiver Test das Ergebnis zeigen, z.B.:
pi@raspberrypi~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.4'>
>>>
Eine Anleitung die als „Pate“ diente, ist
https://pypi.org/project/opencv-python/ , ergänzt durch
https://blog.piwheels.org/new-opencv-builds/
Erster Test von openCV
Der folgende Python Code ist auf vielen Webseiten zu finden und eignet sich als Einstieg:
# import the necessary packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
# initialize the camera and grab a reference to the raw camera capture
camera = PiCamera()
camera.resolution = (320, 240)
camera.framerate = 25
rawCapture = PiRGBArray(camera, size=(320, 240))
# allow the camera to warmup
time.sleep(1.0)
# capture frames from the camera
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_p$
# grab the raw NumPy array representing the image, then initialize t$
# and occupied/unoccupied text
image = frame.array
# show the frame
cv2.imshow("Frame", image)
key = cv2.waitKey(1) & 0xFF
# clear the stream in preparation for the next frame
rawCapture.truncate(0)
# if the `q` key was pressed, break from the loop
if key == ord("q"):
break
Mit
nano bild.py
kann das Programm angelegt werden.
Ein Start erfolgt dann im Desktop über VNC-Client, so dass direkt der Videostrom kontrolliert werden kann.
Der Screenshot in Abb.1 zeigt den VNC-Client mit einem Bild 320×240 Pixel und dem geöffneten Terminal, daneben die Mac-Konsole mit SSH und dem in nano geöffneten Quelltext.
Abb. 1: Screenshot erster Test
Hallo,
ich wollte ein ähnliches Projekt machen und hatte vor mir OpenCV nach der Anleitung hier zu installieren. Leider stoße ich bei der Installation gleich am Anfang auf Fehler. Ich vermute es liegt daran dass ich auf meinem 3B+ RaspiOS verwendet habe anstatt Wheezy. Schade, hatte so gehofft dass es geht, da dieses Tutorial schon eines der neueren ist die man so findet.