Преобразование Python изображения PIL в массив NumPy очень медленно - PullRequest
0 голосов
/ 22 сентября 2018

Я оцениваю модель Tensorflow на открытых кадрах видео.Мне нужно преобразовать входящий образ PIL в измененный массив NumPy так, чтобы я мог выполнить вывод на нем.Но я вижу, что преобразование образа PIL в массив NumPy занимает около 900+ миллисекунд на моем ноутбуке с 16 ГБ памяти и 2,6 ГГц процессором Intel Core i7.Мне нужно уменьшить это до нескольких миллисекунд, чтобы я мог обрабатывать несколько кадров в секунду на моей камере.

Кто-нибудь может подсказать, как ускорить приведенный ниже метод?

def load_image_into_numpy_array(pil_image):
    (im_width, im_height) = pil_image.size
    data = pil_image.getdata()

    data_array = np.array(data)

    return data_array.reshape((im_height, im_width, 3)).astype(np.uint8)

При дальнейшем инструментировании я понял, что np.array(data) занимает большую часть времени ... близко к 900+миллисекунды.Таким образом, преобразование данных изображения в массив numpy является реальным виновником.

1 Ответ

0 голосов
/ 22 сентября 2018

Вы можете просто позволить numpy управлять преобразованием, а не изменять себя.

def pil_image_to_numpy_array(pil_image):
    return np.asarray(pil_image)  

Вы конвертируете изображение в формат (высота, ширина, канал).Это преобразование по умолчанию, которое выполняет функция numpy.asarray для изображения PIL, поэтому явное изменение формы не должно быть необходимым.

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