OpenCVOpenCV Reference

【OpenCV-Python】resize(画像の拡大縮小)

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()

実行結果

OpenCV 画像のリサイズ resize

倍率を指定してリサイズする方法

倍率は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()

実行結果

OpenCV 画像のリサイズ resize

補間方法の指定

リサイズ時の補間方法については

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

コメント

タイトルとURLをコピーしました