Pythonでグレースケール画像を作成したいです・・・
OpenCVライブラリを使えば、簡単にグレースケール画像を作成することができる。コード付きで解説しよう。
✔️ 本記事のテーマ
OpenCVで画像をグレースケール化する方法(コード付き)
✔️ 読者さんへの前置きメッセージ
結論から述べると、
以下の関数を使うことでOpenCVを使って、グレースケール化することができます。
cv2.cvtColor(画像, cv2.COLOR_BGR2GRAY)
本記事は「OpenCVで画像をグレースケール化する方法」について書いています。
この記事を読むことで
「グレースケール画像を作成する方法 や グレースケール画像の使いどころ」
を理解できるようになります。
OpenCVライブラリは画像処理に特化したPythonライブラリです。
OpenCVライブラリを使うことで、画像処理を簡単に行うことができます。
それでは、その方法を詳しく解説していきましょう。
OpenCVとは?
OpenCV (Open Source Computer Vision Library) は、
画像処理に関する機能をまとめたライブラリです。
OSS(オープンソースソフトウェア)として提供されているため、
無料で手軽に使うことができます。
主に、画像中から人の顔を検出したり、
カラー画像を白黒画像に変換する場面で使われています。
OpenCVライブラリの関数一覧と使い方については
「【python】OpenCVの関数一覧と使い方」の記事で解説しています。
今では「画像処理」を用いたPythonプログラミングでは
必ずと言っていいほど使用されるほどにメジャーなライブラリです。
インストール自体も簡単なので趣味や個人開発にもオススメです。
なお、OpenCVのインストールについては
「【python】OpenCVのインストール方法」の記事で解説しています。
OSにもよりますが、3ステップほどでサクッとインストールすることができます。
OpenCVのグレースケール化とは?
すごいざっくり説明すると、「白と黒の濃淡だけで画像を表現すること」です。
イメージとしては、カラー画像を水墨画のような感じにすることです。
例えば、OpenCVライブラリを使うと、
以下のようにカラー画像をグレースケール画像に変換することができます。
このように、
画像を白と黒の多階調の灰色だけで表現することをグレースケールと言います。
OpenCVでグレースケール化する方法(コード付き)
OpenCVライブラリでグレースケール画像を作成する方法を解説します。
まず、今回のサンプルコードは以下のようになります。
# ライブラリのインポート
import cv2
# 画像の読み込み
img = cv2.imread('data/src/lena.jpg')
# 読み込んだ画像をグレースケール化
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 画像の保存
cv2.imwrite('/etc/tmp/after_Lena.jpg', img_gray)
順番に詳しく解説していきましょう。
関数の細かな設定なども合わせて解説していきます。
ライブラリのインポート
import cv2
OpenCVライブラリはPythonの標準ライブラリではありません。
プログラムの一番上でインポートすることで、
OpenCVライブラリを使えるようにしておきましょう。
なお、プログラムを実行した時にこの箇所でエラーが出る場合は、
そもそもOpenCVライブラリのインストールが上手くできていない可能性があります。
OpenCVのインストールについては、
「【python】OpenCVのインストール方法」の記事で解説しています。
エラーが出る場合は、一度、確認してみましょう。
画像の読み込み
img = cv2.imread('data/src/lena.jpg')
OpenCVライブラリでは、関数を使って、画像を読み込むことができます。
画像を読み込むには、cv2.imread関数を使います。
このように、cv2.imread関数を使って画像を読み込むことで、
OpenCVで画像処理を行うことができるようになります。
なお、cv2.imread関数の詳しい情報については、
「OpenCVで画像を読み込む方法【Python】」の記事で解説しています。
読み込んだ画像をグレースケール化
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ここで読み込んだ画像をグレースケール画像にしています。
第1引数には読み込んだ画像データ、
第2引数には「cv2.COLOR_BGR2GRAY」を指定します。
この関数を通すことで、
カラー画像を以下のようなグレースケール画像に変換することができます。
ちなみに、cv2.cvtColor関数の第2引数には、
上で紹介したもの以外にも以下のような引数を使用することができます。
- cv2.COLOR_BGR2HSV
- cv2.COLOR_BGR2YCrCb
- cv2.COLOR_BGR2XYZ
第2引数を「cv2.COLOR_BGR2HSV」にすることで、以下のような画像になります。
第2引数を「cv2.COLOR_BGR2YCrCb」にすることで、以下のような画像になります。
第2引数を「cv2.COLOR_BGR2XYZ」にすることで、以下のような画像になります。
このようにcv2.cvtColor関数を使うことで様々な色変換を行うことができます。
ただし、グレースケール画像以外の色変換はあまり使い道が無いかもしれません。
画像の保存
cv2.imwrite('/etc/tmp/after_Lena.jpg', img_gray)
ここまでの処理でグレースケール化した画像は、
cv2.imwrite関数を使って保存しておきましょう。
画像として保存することで、処理結果を確認することができます。
第1引数には画像パス、第2引数には画像データを指定します。
なお、cv2.imwrite関数の詳しい情報については、
「OpenCVで画像を保存する方法【Python】」の記事で解説しています。
OpenCVのグレースケール化はどのような場面で使う?
OpenCVライブラリには、多くの関数が用意されていて、
様々な画像処理を行うことができます。
OpenCVライブラリの代表的な関数については、
「【python】OpenCVの関数一覧と使い方」の記事で解説しています。
これらのOpenCVで使える関数の多くは、
前処理としてグレースケールが必要になります。
代表的なものは二値化処理です。
二値化処理ではインプット画像をグレースケール画像にする必要があります。
なお、二値化処理については、
「OpenCVで二値化する方法【Python】」の記事で解説しています。
このようにグレースケール化はOpenCVで画像処理をする上で大事な処理なんです。
(おまけ)もっと簡単にOpenCVでグレースケール画像を作成するには
この記事ではcv2.cvtColor関数を使って、
グレースケール画像に変換する方法を解説しました。
処理の流れとして理解しやすいので、この方法を紹介しましたが、
OpenCVでは、もっと簡単にグレースケール化することができます。
# 画像の読み込み
img_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE)
このように、画像を読み込む時に、第2引数に「cv2.IMREAD_GRAYSCALE」を指定することで、最初からグレースケール画像として読み込むことができます。
こっちの方がコードが少ないので簡単ですね。
このように、画像を読み込む方法についても、
「OpenCVで画像を読み込む方法【Python】」
の記事で解説しています。
OpenCVやPythonについてもっとスキルをつけるなら
今回はOpenCVのグレースケール化について解説しました。
OpenCVは今回解説した機能以外にも多くの便利な機能があり、
マスターすれば非常に強い武器になるでしょう。
もし、OpenCVについて独学でスキルをつけるなら、以下の書籍がオススメです。
この書籍はOpenCVの基礎から応用までを
丁寧にかつ詳細に解説しています。
OpenCVのほぼ全てを網羅しているとも言えるほどの徹底ぶりなので、
関数のリファレンスとしても使用することができます。
本記事で解説したグレースケール化についても掲載されています。
エンジニアとしての自身の価値をチェックする(完全無料)
エンジニアとして、
自分の価値がどれくらいのものかご存知でしょうか?
エンジニアとしてIT業界に身を置いていると
今の会社でずっと働くのか、フリーランスとして独立するのか …
と様々な選択肢があります。
どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも
自身の価値を知っておくことはとても重要です。
TechClips ME では、
職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。
▼▼▼▼▼
▲▲▲▲▲
しかもTechClips MEでは想定年収を企業から提示してくれるので、
自身の価値を数字で分かりやすくたしかめることができます。
登録はもちろん完全無料なので、一度登録してみると良いかもしれません。
コメント