Я успешно установил 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)
, я просто получаю пустой серый дисплей.Куда это идет не так?