Код: Выделить всё
bytesобъекты Код: Выделить всё
#!/usr/bin/env python3
import asyncio
import queue
import threading
import cv2
import numpy
import websockets
def render_frames(q):
try:
while (frame := q.get()) is not None:
decoded = cv2.imdecode(numpy.frombuffer(frame, numpy.uint8), cv2.IMREAD_COLOR)
assert decoded is not None
cv2.imshow("Footage", decoded)
cv2.waitKey(1)
finally:
cv2.destroyAllWindows()
class Server:
def __init__(self):
self.queue = queue.SimpleQueue()
self.render_thread = threading.Thread(target=render_frames, args=(self.queue,))
async def run(self):
self.render_thread.start()
try:
server = await websockets.serve(self.handle_client, "0.0.0.0", 8000)
await server.wait_closed()
finally:
self.queue.put(None)
self.render_thread.join()
async def handle_client(self, connection):
async for message in connection:
assert not isinstance(message, str)
self.queue.put(message)
def main():
try:
asyncio.run(Server().run())
except KeyboardInterrupt:
pass
if __name__ == "__main__":
main()
cv2.error: Unknown C++ исключение из кода OpenCV
Я записал кадр на диск и подтвердил, что это допустимое изображение JPEG.
Что странно, если я напишу простой скрипт, который берет одно из изображений JPEG и визуализирует его в бесконечном цикле, он работает нормально. Влияет ли на ситуацию присутствие в боковой теме?
Подробнее здесь: https://stackoverflow.com/questions/791 ... ide-thread
Мобильная версия