skimage 调整大小给出奇怪的输出

2024-04-01

我正在使用调整图像大小skimage.transform.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)

这是我的输入图像 y (240, 320, 3):

这是我的输出图像 x (256, 341, 3):

Edit:好吧,如果我改变的话似乎工作正常preserve_range=False。但为什么它不允许我保持当前的范围呢?

Edit:我使用 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函数来检索帧,然后将输出列表转换为 numpy 数组:

 batch_frames = map(lambda vid: read_random_frames(vid), train_vids_batch)
 frame_tensor = np.asarray(batch_frames)
 y = frame_tensor[0]

我认为这只是因为通过保留范围,我最终得到了 [0, 255] 范围内的浮点数,而pyplot.imshow只能显示 [0.0, 1.0] 范围内的 MxNx3 浮点数组。当我使用将输出转换为 uint8 时z = np.copy(x).astype('uint8')它显示良好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

skimage 调整大小给出奇怪的输出 的相关文章

随机推荐