我正在使用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):
编辑:
好吧,如果我改变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]范围内的浮点数,而pyplot.imshow只能显示[0.0,1.0]范围内的MxNx3浮点数组.当我使用z = np.copy(x).astype(‘uint8’)将输出转换为uint8时,它显示正常.
原文地址:https://www.jb51.cc/python/438456.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。