Python – ESP32 CAM Bild speichern

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.

ESP32 CAM Bild mit Python abrufen

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.

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.

Schematischer Aufbau der Schaltung "ESP32-CAM mit FTDI Modul"
Schematischer Aufbau der Schaltung „ESP32-CAM mit FTDI Modul“

Es gibt aber auch ein passendes Board, auf welches man die ESP32 CAM stecken kann und eine Micro-USB Buchse hat. (link Aliexpress.com)

ESP32 CAM Set mit Antenne und Board

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.

ESP32 CAM mit FTDI Modul

Programm für den ESP32 CAM

Auf der ESP32 CAM muss das Beispielprogramm aus der installierten ESP32 Bibliothek installiert werden.

Arduino IDE – Beispiel CameraWebServer

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.

Webpage im Browser der ESP32-CAM
Webpage im Browser der ESP32-CAM

Ü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ächt 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'

Nun 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 nun 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.

Abrufen eines Standbildes von der ESP32 CAM mit Python
Abrufen eines Standbildes von der ESP32 CAM mit Python

Kommentar hinterlassen

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