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)
のようにします。
補間モードについてはこちら↓を参照ください。
【OpenCV-Python】アフィン変換(同次座標系を使用)
アフィン変換については、こちら↓のページ で、紹介していますが、回転や拡大縮小、平行移動などは3行3列の行列を使った同次座標系を用いるのが便利ですよ! と言っているのですが、OpenCVでは、2行3列の行列を使ったアフィン変換となります。 ...
補間そのものについてはこちら↓を参照ください。
画素の補間(Nearest neighbor,Bilinear,Bicubic)の計算方法
画像を拡大や回転する場合など、画像の画素と画素の間の輝度値を参照する必要が出てきますが、その参照方法を紹介します。 この画素を画素の間を参照する事を一般に補間や内挿(Interpolation)と言います。 最近傍補間(ニアレストネイバー ...
参照ページ
OpenCV: Geometric Image Transformations
コメント