所以我在matlab中使用imcrop
函数得到了某个人脸的图像。
由于我的方法(类似于blobs demo),因此面孔的大小始终不同。
我的一张图片尺寸为:103, 57, 3
,另一张是:174, 64, 3
。
如何使用最短边将图像制成方形?或假设一个或多个长度不是64,我怎么能将图像缩放到64x64平方?
我已尝试再次裁剪它,但我实施错了。
提前致谢。
答案 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