将字节转换回numpyndarray时出了什么问题?

时间:2018-12-02 11:58:48

标签: numpy tcp raspberry-pi3 tcpclient

我成功地在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)

我只得到空白的灰色显示。哪里出了问题?

0 个答案:

没有答案