在Matlab中调整图像大小(使其成为正方形/比例)

在Matlab中调整图像大小(使其成为正方形/比例),matlab,Matlab,所以我有一张某人的脸的图像,是我用matlab中的imcrop函数得到的 由于我的方法类似于,这些面并不总是相同的大小 我的一张图片的大小是:103,57,3,另一张是:174,64,3 如何使用最短边制作图像正方形?或者,假设一个或多个长度不是64,如何将图像缩放到64x64正方形 我尝试过再次裁剪它,但实现错误 提前谢谢。您只需拨打电话即可 要使用最短边使图像成为正方形,请执行以下操作: sz = min([size(img, 1) size(img, 2)]); img_resized =

所以我有一张某人的脸的图像,是我用matlab中的imcrop函数得到的

由于我的方法类似于,这些面并不总是相同的大小

我的一张图片的大小是:103,57,3,另一张是:174,64,3

如何使用最短边制作图像正方形?或者,假设一个或多个长度不是64,如何将图像缩放到64x64正方形

我尝试过再次裁剪它,但实现错误

提前谢谢。

您只需拨打电话即可

要使用最短边使图像成为正方形,请执行以下操作:

sz = min([size(img, 1) size(img, 2)]);
img_resized = imresize(img, [sz sz]);
要将其调整为64x64,请执行以下操作:

你只要打个电话就可以了

要使用最短边使图像成为正方形,请执行以下操作:

sz = min([size(img, 1) size(img, 2)]);
img_resized = imresize(img, [sz sz]);
要将其调整为64x64,请执行以下操作:


如果要使图像沿最短边呈正方形,并且要使结果裁剪从两侧均匀居中,请执行以下操作:

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

如果要使图像沿最短边呈正方形,并且要使结果裁剪从两侧均匀居中,请执行以下操作:

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

你能展示一下你是如何实现它的吗?用最短的边?这可能是-ssz=min[sizeimg1,1 sizeimg1,2];img1=imresizeimg1[ssz-ssz];免责声明-未经测试。我只是再次致电imcrop,但使用的临时矩阵不起作用,因为它需要以像素为单位进行测量。另外,谢谢你的回答,效果很好:你能展示一下你是如何实现它的吗?用最短的边吗?这可能是-ssz=min[sizeimg1,1 sizeimg1,2];img1=imresizeimg1[ssz-ssz];免责声明-未经测试。我只是再次致电imcrop,但使用的临时矩阵不起作用,因为它需要以像素为单位进行测量。另外,谢谢你的回答,效果很好:D