Si vous souhaitez utiliser ESP32-CAM rapidement, vous pouvez utiliser Arduino IDE.
C'est vraiment gênant.
C'est là que MicroPython entre en jeu.
Cité de la documentation officielle
MicroPython fonctionne sur une variété de plates-formes système et matérielles.
Cependant, comme il ne prend actuellement pas en charge ESP32-CAM, il n'y a pas de bibliothèque pour utiliser la caméra. (Il existe un FW personnalisé qui peut utiliser l'appareil photo, et cette fois je l'ai utilisé) De plus, MicroPython est un sous-ensemble de Python, donc certaines méthodes et modules ne sont pas pris en charge.
MicroPython a une bibliothèque appelée urequest, qui peut être utilisée presque comme des requêtes. Facile à installer.
import upip
upip.install('urequests')
Cependant, lorsque je l'ai installé de cette façon, je n'ai pas pu appeler la méthode. J'ai donc transféré celui extrait du référentiel officiel MicroPython vers esp32 et l'ai utilisé. urequest.py Le transfert vers esp32 est facile avec ampy.
#Installez ampy
$ pip install adafruit-ampy
#Transfert de fichiers vers esp32
$ ampy -p /dev/tty.<Selon l'environnement> put <Fichier>
Au départ, comme lors de l'utilisation de requêtes Python
urequests.post(url, files={'image': open('Fichier d'image', 'rb)})
Je me demandais si je pouvais y aller, mais urequests n'a pas de fichiers.
À la suite de diverses enquêtes, j'ai constaté que je pouvais le faire une fois en JSON.
buf = camera.capture()
img_byte = base64.b64encode(buf)
img_json = ujson.dumps({"image": img_byte})
res = urequests.post(url, data=img_json)
J'ai fait référence à cet article. Envoyer / recevoir des données d'image au format JSON en Python sur le réseau
Le traitement côté serveur reçu (Flask) ressemble à ceci
data = request.data.decode('utf-8')
data_json = json.loads(data)
image = data_json['image']
image_dec = base64.b64decode(image)
data_np = np.frombuffer(image_dec, dtype='uint8')
decimg = cv2.imdecode(data_np, 1)
cv2.imwrite(filename, decimg)
Pour le moment, l'objectif de «POSTER l'image prise par ESP32-CAM» a été rempli. Cliquez ici pour ce que j'ai fait ↓ ESP32-CAM_ImagePost