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についてスキルをつけるなら、Udemyの教材がオススメです。

>> 【Pythonで学ぶ】OpenCVでの画像処理入門

 

Udemyは動画ベースで学習ができるので、
実際のコードや図解を見ながら、学習を進めることができます。

 

さらに今なら30日間返金保証がついているので、
一度購入して自分の思っていたものと違った場合は費用がかかりません。

 

先ほどの教材はOpenCVの基礎から応用まで徹底的に解説しています。

 

OpenCVライブラリについて理解するところから、実際に画像処理を行うところまでを動画で解説しているので、非常に実践的な教材です。

 

また、Pythonについて基礎から学ぶのであれば、オンラインスクールがオススメです。


オンラインスクールで学習すると、講義も分かりやすく、
サポート体制もしっかりしているので、これからPythonを学ぶ人にもオススメです。


オンラインで無料レッスンを体験することもできるので、
自分にあっているかどうかを確かめることができます。


オススメは以下の3つです。
どのスクールも無料体験が用意されているので、
契約前に自分に最適なスクールを探すことができるでしょう。

✔️オススメのプログラミングスクール ベスト3

プログラミングスクールについては「プログラミングスクールで失敗しないためには【オススメベスト3も紹介】」の記事でも紹介しています。


気になった方はぜひチェックしてみて下さい〜!

コメント

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