我成功地在PC和树莓派之间建立了TCP连接。通过发送字符串,现在我希望发送numpy数组,基本上是通过连接发送的图像,这是我的服务器代码:
import socket
import pickle
import cv2
import numpy as np
s = socket.socket()
host = '192.168.137.171' #ip of raspberry pi
port = 12346
s.bind((host, port))
cam=cv2.VideoCapture(0)
s.listen(5)
while True:
ret,frame=cam.read()
#frame=pickle.dumps(frame)
frame=np.ndarray.tobytes(frame)
c, addr = s.accept()
print ('Got connection from',addr)
c.send(frame)
#c.send(bytes(frame,"utf-8"))
c.close()
使用此方法,我正在传输numpy数组,方法是使用函数np.ndarray.tobytes()将其转换为字节。执行以下代码后,这是客户端代码,该代码将由我的pc执行:
import socket
import numpy as np
s = socket.socket()
host = '192.168.137.171'# ip of raspberry pi
port = 12346
s.connect((host, port))
while True:
print(type(s.recv(1024)))
x=np.frombuffer(s.recv(1024), dtype=np.uint8)
s.close()
现在所有这些执行后,我希望将字节解码回numpy ndarray并接收图像,但是当我使用
cv2.imshow('x',x)
我只得到空白的灰色显示。哪里出了问题?