Я работаю с гранями разных размеров, которые генерируются во время вывода из видео. Количество посевов лица в кадре может варьироваться. Допустим, у меня n = 3 лицевой культуры размером (127,321,3), (119,258,3), (135,127,3)
. Мне нужно изменить их размер за один раз до нового размера (new_w,new_h,3)
. Изменение размера будет, как правило, понижающей выборкой. Что делать, если некоторые культуры нуждаются в повышении качества?
В настоящее время я использую opencv
функцию изменения размера в цикле, но мне нужно сделать это в реальном времени (< 10 ms)
. Я пытался преобразовать изображения в массивы numey и изменить их размер как массивы numpy, но это искажает изображения. Я также пытался создать пул процессов, но он требует слишком много ресурсов, которые я не могу себе позволить, так как в моей памяти загружена сеть глубокого обучения.
new_w, new_h = 112, 112 # new shape we need to resize images to
crops_batch = [[...],[...],[...]] # contains 3 images
resized_crops = [len(crops_batch),3,new_w,new_h]
for i in range(0, len(crops_batch)):
temp_img = crops_batch[i]
resized_img = cv2.resize(temp_img, (new_h, new_w))
resized_img = np.transpose(resized_img , (2,0,1)) # channels, width, height
resized_crops[i,:,:,:] = resized_img
Моя цель - получить resized_crops
массив формы (n,3,new_w,new_h)
с использованием пакетной обработки, поскольку мне придется обрабатывать сотни культур в секунду.
** Редактировать: ** Что, если все face_crops уже одного размера? Как мы можем сделать изменение размера партии?
** Редактировать 2: ** Я открыт для решения в C ++, которое может помочь изменить размер партии.