Python uint8array для base64 кодирования не работает - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть небольшая функция, в которой я получаю изображения и всегда выполняю функцию обратного вызова.Мне нужно преобразовать это из ndarray в строку в кодировке base64, чтобы иметь возможность передавать ее дальше.Тем не менее, я получаю сообщение об ошибке: ndarray не является C-инфекционным.Я пробую тот же код на нескольких других изображениях, и это работает.Я не знаю, что я делаю здесь не так:

def process_image(image):
    i = np.array(image.raw_data)
    i2 = i.reshape((480,640,4))
    i3 = i2[:,:,:3]

    print('shape : ', i3.shape)
    print('size : ', i3.size)
    print('dtype : ', i3.dtype)

    encode = base64.b64encode(i3)

Вывод, который я получаю:

shape : (480, 640, 3)
size :  921600
dtype :  uint8
Traceback (most recent call last):
  File "D:\Tools\CARLA\CARLA_0.9.5\PythonAPI\examples\ROS_CARLA.py", line 65, in process_image
    encode = base64.b64encode(i3)
  File "C:\Users\u17m36\AppData\Local\Programs\Python\Python37\lib\base64.py", line 58, in b64encode
    encoded = binascii.b2a_base64(s, newline=False)
ValueError: ndarray is not C-contiguous

Что это означает, что это не C-смежный массив?Как я могу решить это?

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