Колба - проблема изображения - не может str и numpy.ndarray

1

Я пытаюсь захватить изображение из picamera (RaspberryPi) и показать его с помощью Flask (в Интернете), но я столкнулся с этой проблемой:

b'Content-Type: image/jpeg\r\n\r\n '+ frame + b'\r\n ')

TypeError: не может конкатенировать объекты 'str' и 'numpy.ndarray'

это код:

stream = io.BytesIO()
with picamera.PiCamera() as camera2:
    camera2.start_preview()
    time.sleep(0.1)
    camera2.capture(stream, format='jpeg')

data = np.fromstring(stream.getvalue(), dtype=np.uint8)

frame = cv2.imdecode(data, 1)

yield (b'--frame\r\n'
       b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')

Хотя я прочитал эту ссылку, но мне это не помогло: https://blog.miguelgrinberg.com/post/video-streaming-with-flask

выходы:

data = np.fromstring(stream.getvalue(), dtype=np.uint8)

[255 216 255..., 175 255 217]

а также

frame = cv2.imdecode(data, 1)

[[[120 125 104] [120 125 104] [120 124 105]...

Любая помощь будет высоко оценен...

Спасибо

Теги:
flask
raspberry-pi

1 ответ

1
Лучший ответ

У вас возникли проблемы, когда вы объединяете строку байтов b'Content-Type: image/jpeg\r\n\r\n' с frames массива numpy. В примере в качестве frames используется строка байтов, которая считывается из jpeg файла непосредственно в двоичном режиме. Я думаю, вы не должны ничего делать с stream.getvalue(). он возвращает вам готовую структуру данных для потоковой передачи (jpeg файл в представлении байтов). поэтому просто используйте его

stream = io.BytesIO()
with picamera.PiCamera() as camera2:
    camera2.start_preview()
    time.sleep(0.1)
    camera2.capture(stream, format='jpeg')

yield (b'--frame\r\n'
   b'Content-Type: image/jpeg\r\n\r\n' + stream.getvalue() + b'\r\n')
  • 0
    удивительный ... решена

Ещё вопросы

Сообщество Overcoder
Наверх
Меню