Как передать NumPy Nndarray в Python, используя сокеты между клиентами и сервером? - PullRequest
0 голосов
/ 09 декабря 2018

Я хочу перенести отдельные кадры изображения, снятого веб-камерой в моей камере Raspberry Pi, на мою систему IDLE (ПК).Я знаю, что существует несколько способов отправки изображения с использованием PIL или Pygame, но я сосредоточен на обработке изображения после получения IDLE на ПК.Я начал с отправки небольшого массива и упомянул эту проблему .Вот код для того же самого: также я использовал его, используя python3, поэтому предложения с тем же самым высоко ценится.Программа CLient:

import socket, pickle

HOST = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
arr = ([1,2,3,4,5,6],[1,2,3,4,5,6])
data_string = pickle.dumps(arr)
s.send(data_string)

data = s.recv(4096)
data_arr = pickle.loads(data)
s.close()
print('Received', repr(data_arr))

Сервер:

import socket

HOST = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(4096)
    if not data: break
    conn.send(data)
conn.close()

До сих пор все было идеально.Теперь, когда я попытался изменить общий массив с массивом numpy следующим образом:

arr=cv2.imread('1.jpg')

я получаю ошибку:

data_arr = pickle.loads(data)

_pickle.UnpicklingError: данные pickle были усечены

Пожалуйста, помогите мне с этим, так как я очень много борюсь за отправку значений.Заранее спасибо.

...