gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:21:04 25 4
gpt4 key购买 nike

我正在使用 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):

enter image description here

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

enter image description here

编辑:好的,如果我更改 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 函数检索帧,然后将输出列表转换为一个 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] 范围内的 float ,而 pyplot.imshow 只能显示 [0, 255] 范围内的 MxNx3 float 组0.0, 1.0]。当我使用 z = np.copy(x).astype('uint8') 将输出转换为 uint8 时,它显示正常。

关于python - skimage 调整大小给出奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34227492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com