OpenCV
前回、Pillow(PIL)で画像に様々なフィルターをかけてみました。
今回は画像処理ライブラリOpenCVで画像を読み込んでグレースケールにしてみます。
なぜグレースケールにするかというと、その次にエッジ検出をしたいがためです。
ただOpenCVを触り出したところなので、少しずつ学んでいきましょうというわけです。
それでは始めていきましょう。
OpenCVのインストール
まずはOpenCVをインストールしますが、pipでインストールできます。
pip install opencv-python
気をつけるのは「opencv」ではなく「opencv-python」とするところです。
画像の読み込みと表示
今回使用する画像は前回同様、蓮の花「lotus.jpg」を用います。
まずはこの画像を読み込んで、表示してみます。
OpenCVをインポートするには「import cv2」とします。
そして「cv2.imread(画像のファイルパス)」で画像を読み込み、「cv2.imshow(“ウインドウのタイトル”, 読み込んだ画像)」とします。
ただこれだけでは画像は一瞬表示されただけで消えてしまいます(速すぎて見えないかも)。
そこで「cv2.waitkey(0)」でキー入力するまで待機させます。
ということでこんな感じ。
import cv2
img = cv2.imread("lotus.jpg")
cv2.imshow('imshow_test', img)
cv2.waitKey(0)
実行結果
画像を読み込むと同時にグレースケール化
次に画像をグレースケール化していきます。
グレースケール化するには読み込むと同時にグレースケール化する方法と読み込んだ後にグレースケール化する方法があるようです。
まずは読み込むと同時にグレースケール化してみます。
その場合、「cv2.imread(画像のファイルパス, cv2.IMREAD_GRAYSCALE)」とします。
import cv2
img = cv2.imread("lotus.jpg", cv2.IMREAD_GRAYSCALE)
cv2.imshow('imshow_test', img)
cv2.waitKey(0)
実行結果
ちなみに「cv2.IMREAD_GRAYSCALE」の代わりに「0」としてもグレースケール化されます。
import cv2
img = cv2.imread("lotus.jpg", 0)
cv2.imshow('imshow_test', img)
cv2.waitKey(0)
実行結果
画像を読み込んだ後でグレースケール化
次に画像を読み込んだ後でグレースケール化してみます。
その場合は「cv2.cvtColor(読み込んだ画像, COLOR_BGR2GRAY)」で画像を変換します。
import cv2
img = cv2.imread("lotus.jpg")
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('imshow_test', img_gray)
cv2.waitKey(0)
実行結果
画像の保存
画像を保存するには「cv2.imwrite(出力ファイルパス, 画像データ)」とします。
import cv2
img = cv2.imread("lotus.jpg", cv2.IMREAD_GRAYSCALE)
cv2.imwrite("lotus_write.jpg", img)
実行結果
これで何と無くですが、OpenCVを扱えるようになってきました。
次回はOpenCVによるエッジ検出を試してみましょう。
ではでは今回はこんな感じで。
コメント