【问题标题】:Resizing an image and preserving the aspect ratio调整图像大小并保留纵横比
【发布时间】:2013-09-09 05:59:10
【问题描述】:

imresize 文档here 中,它提到了以下内容:

B = imresize(A, [numrows numcols]) 返回具有数字的图像 B 由 [numrows numcols] 指定的行数和列数。 numrows 或 numcols 可能是 NaN,在这种情况下 imresize 计算行数 或列自动保留图像纵横比。

在以下部分:

numrows 或 numcols 可能是 NaN,在这种情况下 imresize 计算 自动保留图像的行数或列数 纵横比

这里的NaN是调整图片大小后出现的,还是指未确定numrowsnumcols

那么,如果我有一个大小为365x147 的图像并想将其调整为512x512,那么在分配numrowsnumcols 的值512 后,是否会保留纵横比?

谢谢。

【问题讨论】:

    标签: matlab resize aspect-ratio


    【解决方案1】:

    如果您有一个大小为365x147 的图像A 并想将其调整为512x512,请使用

    B = imresize(A, [512 512]);
    

    如果你想要,例如高度为 512,但要保留比例,请使用

    B = imresize(A, [512 NaN]);
    

    【讨论】:

      【解决方案2】:

      答案是否定的。保留纵横比意味着保留以像素为单位的物理尺寸比。例如,对于大小为 365x147 的图像,纵横比 length(y):length(x) 为 365:147。为了保持该纵横比,调整大小的图像必须满足长度(y):长度(x)=长度(y)/长度(x):1。

      例如,如果您有一张尺寸为 365x147 的图像并且想要将其调整为 512x512,您可以将宽高比从 365:147 更改为 512:512,或者换句话说,从 2.48:1 更改为 1:1。

      另一方面,如果你执行

      b = imresize(a,512/147);
      

      如果 a 的大小为 365 x 147,您将保持相同的纵横比(在舍入误差范围内)并生成大小为 1271 x 512 的图像。如果执行

      b = imresize(a,512/365);
      

      您保留相同的纵横比,但生成大小为 512 x 206 的图像。

      【讨论】:

        猜你喜欢
        • 2012-11-15
        • 2013-06-26
        • 2012-04-15
        • 2019-08-10
        相关资源
        最近更新 更多