Что не так при преобразовании байтов обратно в numpyndarray? - PullRequest
0 голосов
/ 02 декабря 2018

Я успешно установил TCP-соединение между моим компьютером и Raspberry Pi.Отправляя строки, теперь я с нетерпением жду отправки массивов 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 ().После исключения следующего кода вот код клиента, который должен быть выполнен моим компьютером:

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.снимать и получать изображение, но когда я использую

 cv2.imshow('x',x)

, я просто получаю пустой серый дисплей.Куда это идет не так?

...