Pythonで画像処理!OpenCVの基本を紹介!

Python

こんにちは。とりりんです。

OpenCVでの画像処理をPythonで実装します。

今回は基礎的な内容を取り扱いますが、よく使うのに忘れてしまうことがあるので、備忘録も兼ねて執筆します。

こんな方向けに書いています。

  • 画像処理をしたい!
  • 画像処理関連の機械学習を学んでみたい!
  • OpenCVをマスターしてみたい!

最後までご覧いただけると嬉しいです。

スポンサーリンク



OpenCVとは

OpenCVとは、インテルが開発した画像処理向けのライブラリです。

画像の読み込みから表示や書き込み、加工もできる優れものです。

PythonでOpenCVを使うには、pipまたはcondaを用いてインストールする必要があります。

  # !bash

  # pipでインストール
  pip install opencv-python
  
  # condaでインストール
  conda install -c conda-forge opencv

pipでエラーが出る場合はpipをupgradeしてからもう一度試してみてください。

  # !bash
  pip install --upgrade pip

condaはconda-forgeをつけていればインストールされるはずです(多分)。

import cv2とインポートすることで、OpenCVを用いることができます。

スポンサーリンク


画像の読み込み

画像の読み込みは、imread関数を用います。

第1引数に画像ファイルパスを渡すことで、戻り値として画像を読み込むことができます。

第2引数は任意ですが、0(グレースケール)や1(カラー)を指定することも可能です。

なお、戻り値の画像はndarray型です。

以下に例を示します。

  
  # 元画像通りに読み込む
  img = cv2.imread("Lena.jpg")

  # グレースケール
  img = cv2.imread("Lena.jpg", 0)

  # カラー
  img = cv2.imread("Lena.jpg", 1)

OpenCVではカラー画像がRGBではなくBGRで読み込まれる点は忘れやすいので覚えておきましょう。

また、RGBAで読み込むパターン(第2引数=-1)もありますが、私は使ったことがないです。

スポンサーリンク


画像表示

画像の読み込みは、imshow関数を用います。

第1引数に表示ウィンドウ名、第2引数に読み込んだ画像(ndarray型)を設定します。

imshowとセットで覚えておきたいのが、waitKeydestroyAllWindowsです。

waitKeyは引数に指定した秒数(単位:ミリ秒)、0や引数なしの場合は無制限で待ちます。

destroyAllWindowsは引数に閉じたいウィンドウ名を指定します。

私は基本的にwaitKeyとdestroyAllWindowsには引数を使いませんね。

以下に例は、previewという名前のウィンドウで画像を表示します。

  cv2.imshow("preview", img)
  cv2.waitKey()
  cv2.destroyAllWindows()

スポンサーリンク

画像保存(書き込み)

画像の保存は、imwrite関数を用います。

第1引数に保存ファイルパス、第2引数に画像(ndarray型)が入ります。

以下の例は、カレントディレクトリにtest.jpgというファイル名で画像を保存しています。

  cv2.imwrite("./test.jpg", img)

スポンサーリンク

画像変換

OpenCVでは、カラー画像をグレースケールに変換するなどの画像処理も可能です。

画像の変換は、cvtColor関数を用います。

第1引数はndarray型の変換前の画像、第二引数は変換方法し、戻り値に変換後の画像が返ってきます。

なお、第二引数にはこんな変換方法が入ります。

変換方法 記載
BGRからRGB cv2.COLOR_BGR2RGB
BGRからグレースケール cv2.COLOR_BGR2GRAY

こんな使い方をします。

  # RGBからBGR
  img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)

スポンサーリンク

おさらい

画像の読み込みから保存まで通しでやってみたらこんな感じになります。

AIのサンプル画像としてよく使われるLenaさんを例に紹介します。

  import cv2

  img = cv2.imread("Lena.jpg")

  img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

  cv2.imshow("Convert Lena", img)
  cv2.waitKey()
  cv2.destroyAllWindows()
  
  cv2.imwrite("./ConvertLena.jpg", img)

OpenCVではBGRが基本なので、RGBになってしまったimgは気持ち悪い色で表示・保存されます。

左が変換前、右が変換後画像です。

まとめ

今回はOpenCVを使った画像処理を紹介しました!

画像処理は基本的にOpenCVがあれば何でもできると思います。

今回は読み込み・表示・保存・変換の4つを紹介しましたが、興味がある方は画像を使って色々試してみてはいかがでしょうか。

最後までご覧いただき、ありがとうございました!

↓とりりんを応援して頂けると嬉しいです!↓
にほんブログ村 投資ブログ お金(投資)へ

にほんブログ村

スポンサーリンク


コメント

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