POST des images depuis ESP32-CAM (MicroPython) vers le serveur

Si vous souhaitez utiliser ESP32-CAM rapidement, vous pouvez utiliser Arduino IDE.

  1. Court-circuitez l'IO0 / GND et rédigez un croquis
  2. Lorsque l'écriture est terminée, remettez-la en place et démarrez-la.

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.

Version MicroPython des requêtes urequests

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

Recommended Posts

POST des images depuis ESP32-CAM (MicroPython) vers le serveur
Publier une image de Python sur Tumblr
Envoyer les données du journal du serveur vers Splunk Cloud
Comment publier un ticket depuis l'API Shogun
Publier de Python vers Slack
[Partie 4] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Partie 1] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Partie 3] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Postgresql] Connexion SSH au serveur de base de données externe à partir du client
[Partie 2] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Publication de Python sur la chronologie Facebook
[Lambda] [Python] Publier sur Twitter depuis Lambda!
Association de terminal du côté serveur à Amazon SNS (python + boto3)
Comment régler l'heure du serveur sur l'heure japonaise
Notification push du serveur Python vers Android
Essayez d'utiliser le framework web de Python Django (1) - De l'installation au démarrage du serveur
Comment faire fonctionner Linux depuis la console
Comment accéder à la banque de données de l'extérieur
[python] Envoyez l'image capturée de la caméra Web au serveur et enregistrez-la
Connexion SSH au serveur cible à partir de Windows en un clic sur un raccourci
Envoyer un message de Slack à un serveur Python
Connectez-vous à un serveur distant avec SSH
Modifiez le point décimal de la journalisation de, à.
Comment faire fonctionner Linux depuis l'extérieur Procédure
Comment mesurer la vitesse de la ligne depuis le terminal
Téléchargez le jeu de données VGG Face2 directement sur le serveur
[Python] Je vais télécharger FTP sur le serveur FTP.
De l'introduction de pyethapp à l'exécution du contrat
Apprenez à gonfler des images à partir du code TensorFlow
Histoire de passer de Pipenv à la poésie
Le gars qui obtient les données Fitbit du serveur
Extraire des images et des tableaux de pdf avec python pour réduire la charge de reporting
Le meilleur outil pour protéger votre vie privée des photos ...!
Je veux voir le nom de fichier de DataLoader
Les images créées avec matplotlib passent de dvi à pdf
[Python] Comment supprimer les valeurs en double de la liste
Comment créer un article à partir de la ligne de commande
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
POSTER des messages de python vers Slack via un webhook entrant
Je veux détecter des images de chats d'Instagram
J'ai essayé de détecter l'iris à partir de l'image de la caméra
Effacez le cron.log régulièrement pour l'empêcher de se développer.
Essayez de configurer NETCONF (ncclient) du logiciel au routeur
Je voulais utiliser la bibliothèque Python de MATLAB
Celui qui représente graphiquement celui qui a obtenu les données fitbit du serveur
Comment lancer instantanément Jupyter Notebook à partir du terminal
La première étape pour obtenir Blender disponible à partir de Python
Publiez sur votre compte en utilisant l'API sur Twitter
Coloration des points en fonction de la distance de la courbe de régression
Ajoutons-le à la variable d'environnement à partir de la commande ~
J'ai lu la référence Chainer (mise à jour de temps en temps)
Accès ODBC à SQL Server depuis Linux avec Python
Envoyer un message du serveur à l'extension Chrome à l'aide de Google Cloud Messaging pour Chrome
Script Python qui peut vérifier l'état du serveur à partir du navigateur
J'ai essayé de trouver la tendance du nombre de navires dans la baie de Tokyo à partir d'images satellites.