Я изменяю размер изображения, используя skimage.transform.resize
, но я получаю действительно странный результат, и я не могу понять, почему. Может ли кто-нибудь помочь?skimage resize дает странный вывод
Вот мой код:
import matplotlib.pyplot as plt
import skimage.transform
plt.imshow(y)
h,w,c = y.shape
x = skimage.transform.resize(y, (256, (w*256)/h), preserve_range=True)
plt.imshow(x)
Вот мой входное изображение у (240, 320, 3):
Вот мой вывод изображения х (256, 341, 3):
Редактировать: Хорошо, что это нормально работает, если я изменю preserve_range=False
. Но почему это не позволит мне сохранить текущий диапазон?
Редактировать: Я случайно искал кадры из видео с помощью OpenCV. Вот функция, которая возвращает кадр из пути передачи видео, которое я передаю ему.
def read_random_frames(vid_file):
vid = cv2.VideoCapture(vid_file)
# get the number of frames
num_frames = vid.get(cv2.CAP_PROP_FRAME_COUNT)
# randomly select frame
p_frame = random.randint(0, (num_frames-1))
# get frame
vid.set(cv2.CAP_PROP_POS_FRAMES, p_frame)
ret, frame = vid.read()
# convert from BGR to RGB
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
return frame
У меня есть список видео дорожек и я использую map
функцию для извлечения кадров, то я преобразовать outputed список в Numpy массива:
batch_frames = map(lambda vid: read_random_frames(vid), train_vids_batch)
frame_tensor = np.asarray(batch_frames)
y = frame_tensor[0]