【OpenCV】画像の読み込みとグレースケール化、画像の保存[Python]

  • URLをコピーしました!
目次

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によるエッジ検出を試してみましょう。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次