Отправка и получение изображений в байтах - PullRequest
0 голосов
/ 17 мая 2019

Я хочу отправлять и получать изображения с использованием Python и Flask.Мое текущее решение не работает.

from flask import Flask, render_template, request
import pandas as pd
import cv2
import numpy as np
import base64

app = Flask(__name__)

@app.route('/add_face', methods=['GET', 'POST'])
def add_face():
    if request.method == 'POST':
        #  read encoded image
        imageString = base64.b64decode(request.form['img'])
        #  convert binary data to numpy array
        nparr = np.fromstring(imageString, np.uint8)
        #  let opencv decode image to correct format
        img = cv2.imdecode(nparr, cv2.IMREAD_ANYCOLOR);
        cv2.imshow("frame", img)
        cv2.waitKey(0)

    return "list of names & faces"

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

клиент:

import requests
import base64

URL = "http://localhost:5000/add_face"

#first, encode our image with base64
with open("block.png", "rb") as imageFile:
    img = base64.b64encode(imageFile.read())

response = requests.post(URL, data={"name":"obama", "img":str(img)})
print(response.content)

ошибка:

    return binascii.a2b_base64(s)\nbinascii.
Error: Incorrect padding\n\n-->\n' 

1 Ответ

0 голосов
/ 17 мая 2019

Не думаю, что вы правильно анализируете запрос на сервере.Также переменная 'imageString' на самом деле является двоичной, поскольку она является результатом декодирования строки 'img' из запроса на публикацию

Попробуйте изменить

imageString = base64.b64decode(request.form['img'])

на

req = request.get_json(silent=True, force=True)
imageString = base64.b64decode(req.get('img'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...