1. ホーム
  2. python

[解決済み] Numpyのリサイズ/リスケールイメージ

2022-04-27 21:53:28

質問

画像を取り込んで、numpyの配列のまま、画像のスケールを変えたいのですが、どうすればいいですか?

例えば、コカ・コーラのボトルの画像があります。 ボトル-1

これは、形状のnumpy配列に変換されます。 (528, 203, 3) これを2枚目の画像のサイズにリサイズしたいのです。 ボトル2

の形状を持つもの。 (140, 54, 3) .

元の画像を維持したまま、ある形にサイズを変更するにはどうしたらよいでしょうか。他の回答は、1つおきまたは3つめの行を削除することを提案していますが、私がやりたいことは、基本的に、画像エディタを介して行うように画像を縮小しますが、pythonコードで行うことです。numpy/SciPyでこれを行うためのライブラリはありますか?

どのように解決するのですか?

をインストールすることができます。 opencv (これは画像処理、コンピュータビジョンに使われるライブラリです)、そして cv2.resize 関数を使用します。そして例えば使う。

import cv2
import numpy as np

img = cv2.imread('your_image.jpg')
res = cv2.resize(img, dsize=(54, 140), interpolation=cv2.INTER_CUBIC)

ここで img は元画像を含むnumpy配列であるのに対し res を含むnumpy配列です。 リサイズ の画像が表示されます。重要な点は interpolation パラメータ:画像のサイズを変更する方法はいくつかあります。特に、画像を縮小するわけですから、元画像のサイズが ではない リサイズした画像のサイズの倍数です。考えられる補間のスキーマは

  • INTER_NEAREST - 最近傍補間
  • INTER_LINEAR - バイリニア補間 (デフォルトで使用)
  • INTER_AREA - 画素面積の関係を利用したリサンプリング。モアレを発生させないので、画像のデシメーションには好ましい方法である。 の結果を得ることができます。しかし、画像がズームされると、同様に INTER_NEAREST というメソッドがあります。
  • INTER_CUBIC - 4x4 ピクセル近傍のバイキュービック補間法
  • INTER_LANCZOS4 - 8x8 ピクセル近傍の Lanczos 補間

ほとんどのオプションと同様に、すべてのリサイズスキーマについて、ある戦略が他の戦略よりも優先されるシナリオがあるという意味で、quot;best" オプションは存在しません。