esp-idf/examples/peripherals/usb/host/uvc/player.py

38 lines
986 B
Python

# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Unlicense OR CC0-1.0
import socket
import cv2
import numpy as np
frame_count = 0
stream = bytearray()
print('Connecting to server...')
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect(('esp-cam.local', 2222))
print('Receiving data ')
while True:
data = sock.recv(4096)
if not data:
break
stream += data
print('.', end='', flush=True)
a = stream.find(b'\xff\xd8')
b = stream.find(b'\xff\xd9', a)
if a != -1 and b != -1:
jpg = stream[a:b + 2]
stream = stream[b + 2:]
buffer = np.frombuffer(jpg, dtype=np.uint8)
image = cv2.imdecode(buffer, cv2.IMREAD_COLOR)
cv2.imshow('Stream', image)
if cv2.waitKey(10) == 27:
exit(0)
frame_count += 1
print('\nFrames received ', frame_count)