In diesem kurzen und knappen Beitrag möchte ich dir zeigen wie du ein Bild von einer ESP32 CAM mithilfe von Python auf deinem Computer speichern kannst.
Wie du die ESP32 CAM programmierst, habe ich dir bereits im Beitrag Einrichten der ESP32-CAM und erster betrieb ausführlich erläutert. Hier nutze ich die Schaltung, um lediglich ein Bild zu speichern.
Bezug einer ESP32 CAM
Für diesen Beitrag benötigst du eine ESP32 CAM, diese ist schon recht lange auf dem Markt und daher auf den gängigen Portalen zu beziehen.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Wenn du etwas mehr Wartezeit hast, dann kannst du diese noch günstiger auf Aliexpress.com für knapp 3 € inkl. Versandkosten erstehen. Aber leider halt mit knapp 4 Wochen Lieferzeit.
Für die spätere Programmierung benötigst du ein FTDI Modul welches auf ebay.de für knapp 4 €* erworben werden kann.
Aufbau der Schaltung
Da das ESP32 CAM Modul über keinen eigenen USB – Serial Converter verfügt, müssen wir uns mit einem entsprechenden FTDI Modul eine Schaltung aufbauen.
Es gibt aber auch ein passendes Board, auf welches man die ESP32 CAM stecken kann und eine Micro-USB Buchse hat. (link Aliexpress.com)
Wie bereits erwähnt benötigst du für die Programmierung ein FTDI Modul. Jedoch für den späteren betrieb nicht da reicht nur eine 5V Stromquelle.
Programm für den ESP32 CAM
Auf der ESP32 CAM muss das Beispielprogramm aus der installierten ESP32 Bibliothek installiert werden.
In dem Programm muss lediglich das korrekte Kameramodul auskommentiert und die Daten für das lokale Wi-Fi Netzwerk eingegeben werden.
#define CAMERA_MODEL_AI_THINKER // Has PSRAM const char* ssid = "FRITZBox7590GI"; const char* password = "1234567890";
Einrichten der ESP32 CAM
Wenn das Programm erfolgreich hochgeladen wurde, dann wird in der seriellen Konsole die IP-Adresse angezeigt, welche wir in einem Browser übertragen und somit auf eine Webseite gelangen, um die Kamera zu konfigurieren.
Über dieses Webfrontend lässt sich das spätere Standbild konfigurieren.
Python Projekt in PyCharm einrichten
Wollen wir nun einmal mit der Programmierung in Python beginnen. Ich nutze hierzu die Entwicklungsumgebung PyCharm in der kostenfreien Community Edition.
Installieren der Bibliothek Requests
Damit wir das Bild von der URL abrufen können, müssen wir zuvor die Bibliothek requests installieren.
Am einfachsten ist es, die Installation über das Kontextmenü zu starten. Dazu schreiben wir zunächst die Zeile “import requests” und setzen den Cursor auf die rot unterkringelten Wort “requests” und betätigen die Tastenkombination “Alt + Enter”.
Installieren der Bibliothek Pillow
Zum Speichern des Bildes nutze ich die Bibliothek Pillow.
Ich habe diese Bibliothek bereits im Beitrag Python3 – Bilder zusammenfügen mit PIL verwendet, um Bilder zusammenzufügen genutzt.
Abrufen der Bildinformationen von der ESP32 CAM
Über die Adresse “http://<IP-Adresse>/capture” kannst du ein aktuelles Standbild abrufen. Diese Adresse speichern wir uns zunächst in einer Variablen und erzeugen uns nebenbei gleich eine, welche auf eine Zieldatei zeigen soll.
url = 'http://192.168.178.33/capture' output = 'data/output.jpg'
Jetzt können wir mit wenigen Zeilen Code die Bildinformationen abrufen und in eine Datei speichern.
r = requests.get(url) img = Image.open(BytesIO(r.content)) img.save(output)
Hier jetzt der komplette Code zum einfachen Kopieren, du musst hier lediglich deine IP-Adresse sowie das Ausgabeverzeichnis anpassen.
import requests from PIL import Image from io import BytesIO url = 'http://192.168.178.33/capture' output = 'data/output.jpg' r = requests.get(url) img = Image.open(BytesIO(r.content)) img.save(output)
Wenn du die Auflösung, horizontale/ vertikale Spiegelung usw. anpassen möchtest, so musst du dieses lediglich über das Webfrontend einstellen und es wird “on the fly” für die Standbilder übernommen.
1 thought on “Python – ESP32 CAM Bild speichern”