OpenCVで像をリサイズ(拡大・縮小)するには、cv2.resizeを使う。
cv2.resizeの使い方
今回用いるサンプル画像をWEBからダウロード、保存します。
• 関連記事 – 【最速】PythonでWEB上の画像をダウンロードして保存する【Requests】
import requests
import cv2
import matplotlib.pyplot as plt
url = "https://github.com/opencv/opencv/blob/master/samples/data/butterfly.jpg?raw=true"
file_name = "butterfly.jpg"
response = requests.get(url)
image = response.content
with open(file_name, "wb") as f:
f.write(image)
image = cv2.cvtColor(cv2.imread("butterfly.jpg"), cv2.COLOR_BGR2RGB)
print(image.shape)
# (356, 493, 3)
plt.imshow(image);
cv2.resizeの第一引数srcにndarray配列を、第二引数のdstに出力の大きさを(幅、高さ)で指定する。
image_re = cv2.resize(src=image, dsize=(100, 200))
print(image_re.shape)
# (200, 100, 3)
plt.imshow(image);
引数fx(幅)、fy(高さ)を指定することによって、元の画像のサイズの倍率でリサイズすることができる。
image_re2 = cv2.resize(src=image, dsize=None, fx=2, fy=1)
print(image_re2.shape)
# (356, 986, 3)
plt.imshow(image_re2);
リサイズの補間方法について
リサイズ時の補間方法は、デフォルトでINTER_LINEARが指定されている。他の補間方法を使いたい場合は、引数interpolationを指定する。指定できる補間方法は以下の10つである。
- INTER_NEAREST
- INTER_LINEAR
- INTER_CUBIC
- INTER_AREA
- INTER_LANCZOS4
- INTER_LINEAR_EXACT
- INTER_NEAREST_EXACT
- INTER_MAX
- WARP_FILL_OUTLIERS
- WARP_INVERSE_MAP
関連記事、参考資料
コンピュータビジョンライブラリの定番、OpenCVによる画像・動画処理をPythonで行う方法について解説した書籍。ディープラーニングを利用した解析の例も紹介しています。
コメント