在Matlab中调整图像大小(制作方形/比例)

时间:2014-03-11 20:04:44

标签: matlab

所以我在matlab中使用imcrop函数得到了某个人脸的图像。

由于我的方法(类似于blobs demo),因此面孔的大小始终不同。

我的一张图片尺寸为:103, 57, 3,另一张是:174, 64, 3

如何使用最短边将图像制成方形?或假设一个或多个长度不是64,我怎么能将图像缩放到64x64平方?

我已尝试再次裁剪它,但我实施错了。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您只需致电imresize()

使用最短边使图像成方形:

sz = min([size(img, 1) size(img, 2)]);
img_resized = imresize(img, [sz sz]);

要将其调整为64x64

img_resized = imresize(img, [64 64]);

答案 1 :(得分:2)

如果您想要使图像沿最短边成像,并且想要将结果居中(从两侧平均裁剪),请执行以下操作:

N = 103; M = 57;
A = rand(N, M, 3); % original image
sz = size(A);
shortest = min(sz(1:2));
longest = max(sz(1:2));
lv = (1:shortest) + floor((longest - shortest)/2);
if sz(1) == shortest
  Acrop = A(:, lv, :);
else
  Acrop = A(lv, :, :);
end