使用 imresize 调整图像大小会导致八度错误

Resize image using imresize gives an error in octave

我正在尝试使用 Octave 5.2.0 调整非常小的图像的大小,但我不确定为什么在尝试调整它时出现错误

以下行发生错误:

img_unique_only = imresize(f2, [640, 480]); %reshape output of unique colors
error: interp2: cubic requires at least 2 points in each dimension
error: called from
    interp2 at line 244 column 9
    imremap at line 65 column 19
    imresize at line 135 column 8
    test_small_resize_question at line 30 column 17 (the last line which is the imresize line)

代码如下:

pkg load image

f(:,:,1)=[0;0;0;0;127;128;128;128];

f(:,:,2)=[0;0;127;128;0;0;0;0];

f(:,:,3)=[127;128;0;0;0;0;127;128];
%%%%%%%%%%%%%%%%-------------------------------------------------------------------------

[im_r im_c]=size(f);
size_min=min(im_r,im_c); %get minum size from row and col
f2=uint8(f)
imshow(f2)

img_unique_only = imresize(f2, [640, 480]); %reshape output of unique colors

使用imshow(f2)创建下图

img_unique_only = imresize(f2, [640, 480]); %reshape output of unique colors 行不会调整它的大小

创建的变量:

使用线路时img_unique_only = imresize(f2, [640, 480], "nearest"); %reshape output of unique colors

创建的变量:

我得到的是 灰度 图像而不是 640x480 彩色图像

注意:如果有更好的方法我也愿意尝试

解决方法是使用 cat 注意:它会创建不正确的颜色渐变。

f(:,:,1)=[0;0;0;0;127;128;128;128];
f(:,:,2)=[0;0;127;128;0;0;0;0];
f(:,:,3)=[127;128;0;0;0;0;127;128];

height_wanted=640;
width_wanted=480;

repmat_rgb=cat(2,f,f); %add another column to array to get imresize to work
reshaped_output = imresize(repmat_rgb, [height_wanted, width_wanted],'cubic'); %reshape swatch to large output

imshow(reshaped_output);

更新:2021 年 7 月 19 日 这是 imresize 中的错误以获取更多信息和解决方法