OpenCVで画像をリサイズする【cv2.resize】

OpenCVで画像をリサイズする【cv2.resize】プログラミング
ゆうすけ
ゆうすけ

Pythonで画像をresizeする方法を教えて欲しいです。

資格マフィア
資格マフィア

OpenCVを使えば簡単にできるぞ。

 

✔️ 本記事のテーマ

OpenCVで画像をresizeする方法(コード付き)

✔️ 読者さんへの前置きメッセージ

結論から述べると

cv2.rotate(画像データ, (縦のサイズ, 横のサイズ)のタプル)

で画像をresizeすることができます。

 

本記事は「OpenCVで画像をresizeする方法」について書いています。

 

この記事を読むことで
「画像をresizeするために使う関数と使い方」
をイメージできるようになります。

 

OpenCVライブラリは画像処理に特化したライブラリです。

 

OpenCVライブラリを使うことで、面倒な画像のresize処理を簡単にすることが出来ます。

 

それでは、OpenCVでresizeする関数と使い方を詳しく解説していきます。

 

OpenCVとは?(画像処理ライブラリ)

OpenCVとは?

OpenCV (Open Source Computer Vision Library) は、
画像処理に関する機能をまとめたライブラリです。

 

OSS(オープンソースソフトウェア)として提供されているため、
無料で手軽に使うことができます。

 

主に、画像中から人の顔を検出したり、
カラー画像を白黒画像に変換する場面で使われています。

 

OpenCVライブラリの関数一覧と使い方については
【python】OpenCVの関数一覧と使い方の記事で解説しています。

 

今では「画像処理」を用いたPythonプログラミングでは
必ずと言っていいほど使用されるほどに、メジャーなライブラリです。

 

インストール自体も簡単なので、趣味や個人開発にもオススメです。

 

なお、OpenCVのインストールについては
【python】OpenCVのインストール方法の記事で解説しています。

 

OSにもよりますが、
3ステップほどでサクッとインストールすることができます。


OpenCVで画像をresizeする方法

OpenCVで画像をresizeする方法

OpenCVで画像をresizeするには、以下のように書きます。

# 画像の読み込み
img = cv2.imread('./lena.jpg')

# 画像のresize
img_resize = cv2.resize(img, (100,200))

 

上記コードではまず画像データをOpenCVの関数を使って読み込んでいます。

 

画像の読み込みはcv2.imread()で行います。

 

画像の読み込みについては
OpenCVで画像を読み込む方法【Python】」で詳しく解説しています。

 


次に、読み込んだデータに対して、
resize関数をかけることで画像を第2引数で指定したサイズにresizeしています。

 

サイズの指定は(縦, 横)のタプルで指定する必要があります。
なお、単位はpx(ピクセル)です。

 

なので、例えば、縦100px × 横100px の画像を
縦200px ×横200px に拡大したいときは cv2.resize(img, (200,200)) と指定して、
逆に、縦50px ×横50px に縮小したいときは cv2.resize(img, (50,50)) と指定します。

 

次章から実際にコードで書いてみましょう。

 

OpenCVで画像をresizeするサンプルコード

OpenCVで画像をresizeするサンプルコード

ここからは以下の画像(縦200px, 横200px)を対象にします。

cv2.resizeの対象画像

 

この画像を「半分のサイズ」「2倍のサイズ」「横だけ半分」の3パターンでresizeします。

# 画像の読み込み
img = cv2.imread('./lena.jpg')

# 半分のサイズ
img_resize = cv2.resize(img, (100,100))

# 2倍のサイズ
img_resize = cv2.resize(img, (400,400))

# 横だけ半分
img_resize = cv2.resize(img, (200,100))

 

それぞれこのようなコードで画像のresizeを実行することができます。

 

試しに上記のコードで作成した画像は次のような画像になります。

# 半分のサイズ

cv2.resize_半分のサイズ

# 2倍のサイズ

cv2.resize_2倍のサイズ

# 横だけ半分

cv2.resize_横だけ半分

OpenCVで指定した倍率でresizeする

OpenCVで指定した倍率でresizeする

cv2.resizeでは倍率で指定してresizeすることもできます。

# 画像の読み込み
img = cv2.imread('./lena.jpg')

# 指定した倍率でresize
img_resize = cv2.resize(img, dsize=None, fx=0.5, fy=0.5)

 

引数fx、引数fyにそれぞれ縮尺(または拡大)したい倍率を指定することでresizeできます。

 

OpenCVのresize関数の応用してモザイク処理を行う

OpenCVのresize関数の応用してモザイク処理を行う

この記事で解説しているcv2.resize()を使うことで、
画像にモザイク処理をかけることもできます。

 

ざっくり簡単に説明すると、
「画像を一度縮尺した後に、元のサイズに拡大する」
という処理をcv2.resize()で行うことでモザイク処理を行えます。

 

なぜ上記の処理をするとモザイク処理になるのかというと
画像の拡大をすることで1つのピクセルが引き伸ばされて粗い画素になるためです。

 

実際にこのようなモザイク処理を画像に施すことができます。

cv2.resizeのモザイク処理

 

ここで紹介したモザイク処理については
OpenCVを使ってモザイク処理を行う【Python】」の記事でも解説しています。

 

OpenCVの他の関数

OpenCVの他の関数

OpenCvには画像の回転以外にも便利な関数が数多く用意されています。

 

他の関数についても一部、紹介しておきます。

画像の回転

# 画像の回転
img_rotate = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)

画像を回転させる時は、cv2. rotate()を使用します。

 

このように書くことで、
画像を時計回りに90°回転しています。

 

画像を回転させる方法については
OpenCVで画像を回転させる【Python】」の記事でも解説しています。

 

画像の反転

# X軸反転
xAxis = cv2.flip(img, 0)
# Y軸反転
yAxis = cv2.flip(img, 1)
# XY軸反転
xyAxis = cv2.flip(img, -1)


画像を反転する時は、cv2.flipを使用します。

画像の画像のグレースケール変換

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

 

画像をグレースケールにする時は、cv2.cvtColor()を使用します。

 

OpenCVの便利な関数については
OpenCVの関数一覧と使い方」の記事でも解説しています。

 

OpenCVやPythonについてもっとスキルをつけるなら

OpenCVやPythonについてもっとスキルをつけるなら

今回はOpenCVで画像を回転させる方法とその他の関数を一部解説しました。

 

OpenCVは注目が集まっていて、いま需要の高い技術です。

 

もし、OpenCVについて独学でスキルをつけるなら、以下の書籍がオススメです。

 

この書籍はOpenCVの基礎から応用までを
丁寧にかつ詳細に解説しています。

 

OpenCVのほぼ全てを網羅しているとも言えるほどの徹底ぶりなので、
関数のリファレンスとしても使用することができます。
本記事で画像のリサイズについても掲載されています。

エンジニアとしての自身の価値をチェックする(完全無料)

エンジニアとして、

自分の価値がどれくらいのものかご存知でしょうか?

 

エンジニアとしてIT業界に身を置いていると

今の会社でずっと働くのか、フリーランスとして独立するのか …

と様々な選択肢があります。

 

どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも

自身の価値を知っておくことはとても重要です。

 

TechClips ME では、

職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。

▼▼▼▼▼

▲▲▲▲▲

しかもTechClips MEでは想定年収を企業から提示してくれるので、

自身の価値を数字で分かりやすくたしかめることができます。

 

登録はもちろん完全無料なので、一度登録してみると良いかもしれません。

 

コメント

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