Mémo pour l'envoi et la réception d'images avec Python (Flask)

introduction

Cette fois, je vais noter l'une des façons de recevoir des images avec le flask framework python. Plus précisément, il reçoit l'image dans un format encodé en base64, la décode côté flacon et restaure l'image. Ensuite, utilisez open-cv pour convertir l'image restaurée en niveaux de gris, ré-encodez-la en base64 et notez-la jusqu'à ce qu'elle soit renvoyée.

La source

La bibliothèque à utiliser est la suivante.

requirements.txt


flask
flask-cors
opencv-python
opencv-contrib-python

Je souhaite gérer plusieurs feuilles de données reçues dans la demande, je vais donc utiliser le format json.

[
    {
        id : 0
        Image : id4zFjyrkAuSI2vUBKVLP...(Image encodée en base64)
    },
    {
        id : 1
        Image : k75GN/oll7KUCulSpSM/S...(Image encodée en base64)
    }
]

main.py


from flask import Flask, jsonify, request
from flask_cors import CORS
import cv2
import numpy as np
import base64

app = Flask('flask-tesseract-api')
CORS(app)

@app.route("/image/", methods=["POST"])
def post():
    """
Convertir l'image en échelle de gris
    """

    response = []

    for json in request.json:

        #Décoder l'image
        img_stream = base64.b64decode(json['Image'])
        
        #Convertir en tableau
        img_array = np.asarray(bytearray(img_stream), dtype=np.uint8)
        
        # open-Échelle de gris avec cv
        img_gray = cv2.imdecode(img_array, 0)
   
        #Enregistrer le résultat de la conversion
        cv2.imwrite('result.png', img_before)

        #Encoder pour les fichiers enregistrés
        with open('result.png', "rb") as f:
            img_base64 = base64.b64encode(f.read()).decode('utf-8')
        
        #Encadré en réponse json
        response.append({'id':json['id'], 'result' : img_base64})
       
    return jsonify(response)

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000,debug=True)

Résumé

J'ai pu envoyer plusieurs images encodées dans flask au format json. Avec cela, vous pouvez implémenter la fonction pour gérer plusieurs images en même temps.

Recommended Posts

Mémo pour l'envoi et la réception d'images avec Python (Flask)
Notes d'évaluation de la qualité d'image CG en Python
Format d'image en Python
Téléchargeur d'images avec Flask
Tweet avec image en Python
Collection de traitement d'image en Python
Mémo d'ajout d'image dans reportlab
Implémentation de la segmentation d'image en python (Union-Find)
Obtenir, publier un mémo de communication en Python
Hello World avec Flask [Mémo approprié]
Mémo Python
mémo python
Mémo du flacon
mémo python
Mémo Python
Mémo Python
Essayez d'envoyer un paquet SYN en Python
Lancer une application Flask dans Python Anywhere
Comment régler le contraste de l'image en Python
Traitez facilement des images en Python avec Pillow
Mémo de l'opération de position de pixel pour les données d'image avec Python (numpy, cv2)
Quadtree en Python --2
Python en optimisation
CURL en Python
[Python] Mémo sur le dictionnaire
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
mémo débutant python (9.2-10)
traitement d'image python
Un mémo que j'ai écrit un tri rapide en Python
Méta-analyse en Python
Unittest en Python
Comment utiliser la bibliothèque d'images Python dans la série python3
Qu'est-ce que wheezy dans l'image Docker Python?
Mémo Primer Flask
Époque en Python
Obtenir l'URL de l'image à l'aide de l'API Flickr en Python
Allemand en Python
DCI en Python
tri rapide en python
Un mémo que j'ai écrit un tri de fusion en Python
Mémo de base Flask
nCr en python
N-Gram en Python
★ Mémo ★ Python Iroha
Programmation avec Python
Mémo de lecture d'image
Plink en Python
Constante en Python
Créer une image avec des caractères avec python (japonais)
[Python] Mémo EDA
Mémo opérateur Python 3
FizzBuzz en Python