可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm creating a system to share video with opencv but I've got a problem. I've a server and a client but when I send informations to the server, the must be bytes. I send 2 things:
ret, frame = cap.read()
ret is a booland frame is the data video, a numpy.ndarray ret is not a problem but frame: I convert it in string and then in bytes:
frame = str(frame).encode() connexion_avec_serveur.send(frame)
I'd like now to convert again frame in a numpy.ndarray.
回答1:
Your str(frame).encode() is wrong. If you print it to terminal, then you will find it is not the data of the frame.
An alternative method is to use tobytes() and frombuffer().
## read ret, frame = cap.read() sz = frame.shape ## tobytes frame_bytes = frame.tobytes() print(type(frame_bytes)) # <class 'bytes'> ## frombuffer and reshape frame_frombytes = np.frombuffer(frame_bytes, dtype=np.uint8).reshape(sz) print(type(frame_frombytes)) ## <class 'numpy.ndarray'> ## test whether they equal or not print(np.array_equal(frame, frame_frombytes))