OpenCVでグレースケール画像を簡単に作成する【Python】

OpenCVでグレースケール画像を簡単に作成する【Python】プログラミング
ゆうすけ
ゆうすけ

Pythonでグレースケール画像を作成したいです・・・

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

OpenCVライブラリを使えば、簡単にグレースケール画像を作成することができる。コード付きで解説しよう。


✔️ 本記事のテーマ

 OpenCVで画像をグレースケール化する方法(コード付き)

 

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


結論から述べると、
以下の関数を使うことでOpenCVを使って、グレースケール化することができます。

cv2.cvtColor(画像, cv2.COLOR_BGR2GRAY)


本記事は「OpenCVで画像をグレースケール化する方法」について書いています。

 

この記事を読むことで
「グレースケール画像を作成する方法 や グレースケール画像の使いどころ」
を理解できるようになります。

 

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

 

OpenCVライブラリを使うことで、画像処理を簡単に行うことができます。

 

それでは、その方法を詳しく解説していきましょう。

 

OpenCVとは?

OpenCVとは?

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

 

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

 

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


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

 

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

 

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

 

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

 

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

 

OpenCVのグレースケール化とは?

OpenCVのグレースケール化とは?

すごいざっくり説明すると、「白と黒の濃淡だけで画像を表現すること」です。


イメージとしては、カラー画像を水墨画のような感じにすることです。


例えば、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」にすることで、以下のような画像になります。

cv2.COLOR_BGR2HSVの結果画像

第2引数を「cv2.COLOR_BGR2YCrCb」にすることで、以下のような画像になります。

cv2.COLOR_BGR2YCrCbの結果画像

第2引数を「cv2.COLOR_BGR2XYZ」にすることで、以下のような画像になります。

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ライブラリには、多くの関数が用意されていて、
様々な画像処理を行うことができます。


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


これらのOpenCVで使える関数の多くは、
前処理としてグレースケールが必要になります。


代表的なものは二値化処理です。


二値化処理ではインプット画像をグレースケール画像にする必要があります。


なお、二値化処理については、
OpenCVで二値化する方法【Python】」の記事で解説しています。


このようにグレースケール化はOpenCVで画像処理をする上で大事な処理なんです。

 

(おまけ)もっと簡単に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やPythonについてもっとスキルをつけるなら

今回はOpenCVのグレースケール化について解説しました。

 

OpenCVは今回解説した機能以外にも多くの便利な機能があり、
マスターすれば非常に強い武器になるでしょう。

 

OpenCVについてスキルをつけるならUdemyの教材がオススメです。

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

 

Udemyは買い切りの動画学習サービスです。
一度購入してしまえば、その教材はずっと使うことができます。

 

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

 

上記の教材はOpenCVの知識がない人でもゼロから実用的なレベルのOpenCVスキルを習得できます。
その教材の質の高さから1000件近い購入数にも関わらず、4以上の評価を維持しています。

 

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

 

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

 

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

 

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

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

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

 

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

コメント

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