OpenCVで画像のリサイズを行うには、resize関数を用います。
resize関数では、リサイズ後の画像の大きさ(幅と高さ)を指定する方法と、リサイズのスケールを指定する方法があります。
構文
resize( src, dsize[, dst[, fx[, fy[, interpolation]]]] ) -> dst
src | リサイズを行う画像データを指定します。 |
dsize | リサイズ後の画像サイズ(幅, 高さ)を指定します。 倍率(fx, fy)を指定するときは、Noneを指定します。 |
fx | 横方向の倍率を指定します。 |
fy | 縦方向の倍率を指定します。 |
interpolation | 補間モードを以下の中から指定します。 cv2.INTER_NEAREST cv2.INTER_LINEAR cv2.INTER_CUBIC cv2.INTER_AREA cv2.INTER_LANCZOS4 |
出力サイズを指定してリサイズする方法
リサイズ後のサイズを(幅, 高さ)を指定してリサイズを行います。
サンプルプログラム
import cv2
# 画像の読込
src = cv2.imread("image.bmp", cv2.IMREAD_UNCHANGED);
# 出力サイズ(幅、高さ)を指定してリサイズ
dst = cv2.resize(src, (400, 200))
# 画像の表示
cv2.imshow("Src Image", src)
cv2.imshow("Resize Image", dst)
cv2.waitKey()
実行結果
倍率を指定してリサイズする方法
倍率はfx, fyを指定するのですが、出力後のサイズ(dsize)は省略できないので、dsizeにNoneを指定します。
指定方法は
dst = cv2.resize(src, None, None, 0.8, 1.2)
や、変数名を指定して
dst = cv2.resize(src, None, fx = 0.8, fy = 1.2)
のようにします。
サンプルプログラム
import cv2
# 画像の読込
src = cv2.imread("image.bmp", cv2.IMREAD_UNCHANGED);
# スケール(横方向、縦方向)を指定してリサイズ
dst = cv2.resize(src, None, None, 0.8, 1.2)
# 画像の表示
cv2.imshow("Src Image", src)
cv2.imshow("Resize Image", dst)
cv2.waitKey()
実行結果
補間方法の指定
リサイズ時の補間方法については
cv2.INTER_NEAREST
cv2.INTER_LINEAR
cv2.INTER_CUBIC
cv2.INTER_AREA
cv2.INTER_LANCZOS4
の中から指定します。
指定方法は
dst = cv2.resize(src, None, None, 0.8, 1.2, cv2.INTER_NEAREST)
や、変数名を指定して
dst = cv2.resize(src, None, fx = 0.8, fy = 1.2, interpolation = cv2.INTER_NEAREST)
のようにします。
補間モードについてはこちら↓を参照ください。
補間そのものについてはこちら↓を参照ください。
参照ページ
https://docs.opencv.org/4.6.0/da/d54/group__imgproc__transform.html#ga47a974309e9102f5f08231edc7e7529d