Я пытаюсь захватить изображение из 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]...
Любая помощь будет высоко оценен...
Спасибо
У вас возникли проблемы, когда вы объединяете строку байтов 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')