Отправить кадр, обнаруженный с веб-камеры, с помощью сокетов Python ⇐ Python
Отправить кадр, обнаруженный с веб-камеры, с помощью сокетов Python
Я отправлю кадр, обнаруженный веб-камерой, на другое устройство. Это устройство проверит объекты с помощью YOLOv5 и отправит количество имеющихся объектов на устройство с камерой. Я начал с отправки изображения на другое устройство, но у меня возникли проблемы с сокетами Python.
Код сервера:
импортировать сокет импортировать cv2 импорт ио импортировать numpy как np из изображения импорта PIL ХОСТ = "127.0.0.1" ПОРТ = 65432 s = сокет.сокет(сокет.AF_INET, сокет.SOCK_STREAM) s.bind((ХОСТ, ПОРТ)) с.прослушивать() конн, адрес = s.accept() print(f"Подключено через {адрес}") камера = cv2.VideoCapture(0) пока правда: ret, кадр = camera.read() кадр = cv2.resize(frame, (640, 480)) рамка = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) рамка = Image.fromarray(frame) Frame_bytes = io.BytesIO() Frame.save(frame_bytes, format="JPEG") Frame_bytes = Frame_bytes.getvalue() conn.sendall(frame_bytes) данные = conn.recv(4096) распечатать (данные) если cv2.waitKey(1) & 0xFF == ord("q"): перерыв Код клиента:
импортировать сокет время импорта импортировать cv2 импорт ио импортировать numpy как np из изображения импорта PIL импортировать случайный ХОСТ = "127.0.0.1" ПОРТ = 65432 s = сокет.сокет(сокет.AF_INET, сокет.SOCK_STREAM) s.connect((ХОСТ, ПОРТ)) пока правда: данные = s.recv(8192) кадр = Image.open(io.BytesIO(данные)) кадр = np.array(кадр) рамка = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR) cv2.imshow("рамка", рамка) cv2.waitKey(1) s.sendall(b"ОК") Когда я запустил эти коды, client.py возвращает ошибку:
Traceback (самый последний вызов — последний): Файл «C:\Users\ASUS\Desktop\test\client.py», строка 18, в кадр = np.array(кадр) ^^^^^^^^^^^^^^^^ Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\Image.py», строка 696, в __array_interface__ новые["данные"] = self.tobytes() ^^^^^^^^^^^^^^^ Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\Image.py», строка 754, в тобайтах self.load() Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\ImageFile.py», строка 266, в загрузке поднять OSError (сообщение) OSError: файл образа усечен (31 байт не обработан) PS C:\Users\ASUS\Desktop\test> python client.py Traceback (последний вызов последний): Файл «C:\Users\ASUS\Desktop\test\client.py», строка 18, в кадр = np.array(кадр) ^^^^^^^^^^^^^^^^ Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\Image.py», строка 696, в __array_interface__ новые["данные"] = self.tobytes() ^^^^^^^^^^^^^^^ Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\Image.py», строка 754, в тобайтах self.load() Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\ImageFile.py», строка 266, в загрузке поднять OSError (сообщение) OSError: файл образа усечен (35 байт не обработаны) Я попробовал изменить размер буфера приема, но не смог решить проблему.
Я отправлю кадр, обнаруженный веб-камерой, на другое устройство. Это устройство проверит объекты с помощью YOLOv5 и отправит количество имеющихся объектов на устройство с камерой. Я начал с отправки изображения на другое устройство, но у меня возникли проблемы с сокетами Python.
Код сервера:
импортировать сокет импортировать cv2 импорт ио импортировать numpy как np из изображения импорта PIL ХОСТ = "127.0.0.1" ПОРТ = 65432 s = сокет.сокет(сокет.AF_INET, сокет.SOCK_STREAM) s.bind((ХОСТ, ПОРТ)) с.прослушивать() конн, адрес = s.accept() print(f"Подключено через {адрес}") камера = cv2.VideoCapture(0) пока правда: ret, кадр = camera.read() кадр = cv2.resize(frame, (640, 480)) рамка = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) рамка = Image.fromarray(frame) Frame_bytes = io.BytesIO() Frame.save(frame_bytes, format="JPEG") Frame_bytes = Frame_bytes.getvalue() conn.sendall(frame_bytes) данные = conn.recv(4096) распечатать (данные) если cv2.waitKey(1) & 0xFF == ord("q"): перерыв Код клиента:
импортировать сокет время импорта импортировать cv2 импорт ио импортировать numpy как np из изображения импорта PIL импортировать случайный ХОСТ = "127.0.0.1" ПОРТ = 65432 s = сокет.сокет(сокет.AF_INET, сокет.SOCK_STREAM) s.connect((ХОСТ, ПОРТ)) пока правда: данные = s.recv(8192) кадр = Image.open(io.BytesIO(данные)) кадр = np.array(кадр) рамка = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR) cv2.imshow("рамка", рамка) cv2.waitKey(1) s.sendall(b"ОК") Когда я запустил эти коды, client.py возвращает ошибку:
Traceback (самый последний вызов — последний): Файл «C:\Users\ASUS\Desktop\test\client.py», строка 18, в кадр = np.array(кадр) ^^^^^^^^^^^^^^^^ Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\Image.py», строка 696, в __array_interface__ новые["данные"] = self.tobytes() ^^^^^^^^^^^^^^^ Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\Image.py», строка 754, в тобайтах self.load() Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\ImageFile.py», строка 266, в загрузке поднять OSError (сообщение) OSError: файл образа усечен (31 байт не обработан) PS C:\Users\ASUS\Desktop\test> python client.py Traceback (последний вызов последний): Файл «C:\Users\ASUS\Desktop\test\client.py», строка 18, в кадр = np.array(кадр) ^^^^^^^^^^^^^^^^ Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\Image.py», строка 696, в __array_interface__ новые["данные"] = self.tobytes() ^^^^^^^^^^^^^^^ Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\Image.py», строка 754, в тобайтах self.load() Файл «C:\Users\ASUS\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\ImageFile.py», строка 266, в загрузке поднять OSError (сообщение) OSError: файл образа усечен (35 байт не обработаны) Я попробовал изменить размер буфера приема, но не смог решить проблему.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как отправить кадр захвата камеры на потоковую передачу YouTube с помощью ffmpeg
Anonymous » » в форуме Python - 0 Ответы
- 54 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как отправить собственное сообщение ping с помощью веб-сокетов Python?
Anonymous » » в форуме Python - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как отправить собственное сообщение ping с помощью веб-сокетов Python?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-