Ответ opencv (numpy) изображения с колбой - PullRequest
0 голосов
/ 07 мая 2018

Поскольку я слышал о проблемах, вызванных многократной записью на SD-карты, я хочу, чтобы мои изображения использовались в приложении для колб (работающем на Raspberry Pi) напрямую, используя объект, подобный файлу. В моем приложении я обрабатываю изображения каждые несколько секунд, и мне нужно отобразить их в веб-интерфейсе с помощью колбы.

На самом деле я пытаюсь что-то вроде этого:

@app.route('/image')
def image():
    img = cv2.imread('raw.png')
    img_str = cv.imencode('.png', img)[1].tostring()
    f = io.BytesIO()
    f.write(img_str)
    f.seek(0)
    #return Response(bytes, mimetype='image/jpeg')
    return send_file(f, mimetype='image/png')

Моя цель - вызывать эту функцию из веб-интерфейса, используя ajax несколько раз в секунду, чтобы обновить изображение. Возможно, вместо фиксированной частоты можно использовать долгосрочные опросы. Сейчас я хочу обслужить изображение, не записывая его на SDCard. В примере кода возвращается «Изображение не может быть отображено, поскольку оно содержит ошибки ..»

Я новичок в фляге, а также в opencv, так что любой совет поможет. Также дайте мне знать, если есть простой или лучший способ обслуживания часто обновляемых изображений с использованием встроенных потоковых объектов, socketio или любого другого.

Спасибо

1 Ответ

0 голосов
/ 07 августа 2018

Вы должны попробовать это так:

@app.route('/image')
def image():
    img = cv2.imread('raw.png')
    data = cv.imencode('.png', img)[1].tobytes()
    return Response(b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + data + b'\r\n\r\n', mimetype='multipart/x-mixed-replace; boundary=frame'
...