Я пишу это приложение, в котором у меня есть клиент, который берет кадры с веб-камеры и, используя метод POST
, отправляет их на сервер Flask
.
На сервере Flask
есть функция, которая берет изображение, выполняет некоторую обработку изображения и возвращает число. Пока все хорошо.
То, что я пытаюсь сделать, это показать cv2.imshow()
входящий поток на сервер. Для этого я использую celery
, чтобы сделать это асинхронным. Хитрость в том, что вы не можете отправить изображение на celery
, поэтому Ι преобразуйте изображение в base64
и передайте его в качестве аргумента.
После передачи закодированного изображения в функцию, мне нужно его декодировать и передать, используя cv2.imshow()
показать его. Вот код, который я использую для конвертации (здесь ):
def data_uri_to_cv2_img(uri):
encoded_data = uri.split(',')[1]
nparr = np.fromstring(encoded_data.decode('base64'), np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
return img
Проблема в том, что возвращаемая переменная img
равна None
, а переменная nparr
- нет.
EDIT
После возврата переменной img
получаю ошибку:
error: (-215) size.width>0 && size.height>0 in function imshow
У вас есть идеи или мысли, почему это происходит, или как преодолеть эту проблему?