imresize_and_pad_if_need
-
説明:画像を
(max_h, max_w)の枠内に収まるようにリサイズし、必要に応じて固定サイズにパディングします。 -
パラメータ
- img (
np.ndarray):入力画像。 - max_h (
int):出力の最大高さ(パディング後の固定高さ)。 - max_w (
int):出力の最大幅(パディング後の固定幅)。 - interpolation (
str | int | INTER):リサイズ時の補間方法。デフォルトはINTER.BILINEAR。 - pad_value (
int | tuple[int, int, int] | None):パディング値。3-channel の場合は int または tuple(OpenCV 慣例:BGR)が使用できます。デフォルトは 0。 - pad_mode (
str | int | BORDER):パディングモード。デフォルトはBORDER.CONSTANT。 - return_scale (
bool):リサイズ倍率を返すかどうか。デフォルトはFalse。
- img (
-
戻り値
return_scale=Falseのとき:np.ndarray。return_scale=Trueのとき:(np.ndarray, float)。float はscale = min(max_h/raw_h, max_w/raw_w)。
-
備考
- パディングは bottom/right のみに適用されます(top=0, left=0)。
max_h/max_wが元画像より小さい場合は縮小し、大きい場合は拡大します。
-
例
import capybara as cb
img = cb.imread('lena.png')
out, scale = cb.imresize_and_pad_if_need(
img,
max_h=640,
max_w=640,
pad_value=0,
return_scale=True,
)
print(out.shape, scale)