我正在尝试使用error: imresize: IM must be a grayscale or RGB image.
调整图片大小(rgb),但它总是会出现此错误
imread
使用imshow
和uint8
以及imresize
类成功加载并显示图片。
在isimage
内调试期间,我注意到if条件中的function im = imresize (im, scale, method = "cubic")
if (nargin < 2 || nargin > 3)
print_usage ();
elseif (! isimage (im) || (! isrgb (im) && ! isgray (im)))
error ("imresize: IM must be a grayscale or RGB image.")
.
.
.
总是= 0:
isimage
在ismatrix
内,ismatrix
就是发生这种情况的原因。
所以我从条件中删除了ismatrix
,因为只有输入矩阵是2D时才从文档中给出1。它工作正常,但我认为这不是最好的解决方案。修改后的function retval = isimage (img)
retval = (! issparse (img) && ! isempty (img) &&
isreal (img) && (isnumeric (img) || islogical (img)));
endfunction
:
im = imread(pos(i).im);
padx = model.sbin * widths(i) / pixels(2); ##some calculations
pady = model.sbin * heights(i) / pixels(1);
x1 = round(pos(i).x1-padx);
x2 = round(pos(i).x2+padx);
y1 = round(pos(i).y1-pady);
y2 = round(pos(i).y2+pady);
window = subarray(im, y1, y2, x1, x2, 1);
warped{i} = imresize(window, cropsize, 'bilinear');
所以任何人都可以更好地了解如何解决这个问题?
编辑: 这是我试图运行的代码
% B = subarray(A, i1, i2, j1, j2, pad)
% Extract subarray from array
% pad with boundary values if pad = 1
% pad with zeros if pad = 0
dim = size(A);
B = zeros(i2-i1+1, j2-j1+1, dim(3));
if pad
for i = i1:i2
for j = j1:j2
ii = min(max(i, 1), dim(1));
jj = min(max(j, 1), dim(2));
B(i-i1+1, j-j1+1, :) = A(ii, jj, :);
end
end
else
for i = max(i1,1):min(i2,dim(1))
for j = max(j1,1):min(j2,dim(2))
B(i-i1+1, j-j1+1, :) = A(i, j, :);
end
end
end
Subarray.m
{{1}}