Numpy к строке над сокетом приводит к ошибкам декодирования - PullRequest
0 голосов
/ 18 ноября 2018

Так что для моего школьного проекта я использую kivy для отправки изображений на телефон Android, пока что все прошло довольно хорошо. но теперь я застрял, потому что серверная сторона отправляет массив numpy клиенту, но, очевидно, kivy не может установить numpy в python3, я пробовал это в python2.7, но я не могу даже обойти другую ошибку о возможностях устройства. так что мое единственное оставшееся решение - использовать numpy и превратить его в строку, чтобы текстура kivy gui могла его отобразить. но до сих пор я получаю сообщение об ошибке: « это байтовый объект, и у него нет метода tostring () », а когда я использую tostring, я продолжаю получать « неверный код ошибки utf- 8 не могу декодировать .....". Все отлично работает на ПК с NumPy, мне просто нужно сделать на стороне клиента без NUMPY, но я не могу заставить его работать.

Серверная сторона:

data = conn.recv(1024)

data = pickle.dumps(camera.get())  ### numpy frame

conn.sendall(struct.pack("!L", len(data)) + data)  ### new code
print("Test")

Клиентская сторона:

data = b""
payload_size = struct.calcsize("!L")
while True:

    while len(data) < payload_size:
        data += self.s.recv(4096)

    packed_msg_size = data[:payload_size]
    data = data[payload_size:]

    msg_size = struct.unpack("!L", packed_msg_size)[0]

    while len(data) < msg_size:

        data += self.s.recv(4096)

    frame_data = data[:msg_size]
    data = data[msg_size:]

    frame = pickle.loads(frame_data)

Изображение текстуры буфера на стороне клиента:

image_texture = Texture.create(
size=(frame.shape[1], frame.shape[0]), colorfmt='bgr')        
image_texture.blit_buffer(frame.flatten(), colorfmt='bgr', bufferfmt='ubyte')    
self.texture = image_texture

1 Ответ

0 голосов
/ 19 ноября 2018

решил это, используя frame.flatten () и затем frame.tostring () перед отправкой через сокет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...