Используйте cv2.imshow с колбой и сельдереем - PullRequest
0 голосов
/ 30 мая 2019

Я пишу это приложение, в котором у меня есть клиент, который берет кадры с веб-камеры и, используя метод 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

У вас есть идеи или мысли, почему это происходит, или как преодолеть эту проблему?

...