PythonでOpenCVを使った画像処理を始めるには、まず画像の読み込み方を知る必要があります。
この記事では、OpenCVとは何かの概要と、cv2.imread()を使った画像の読み込み方法、読み込みモードの指定方法について解説します。
OpenCVとは
OpenCVはインテルが開発し公開しているオープンソースの画像処理ライブラリです。現在も活発に開発が続けられており、C++、Python、Java、JavaScriptなど様々な言語で利用できます。
また、クロスプラットフォーム対応しており、Windows、Linux、macOS、Android、iOSなど多様な環境で動作します。OpenCVを利用した物体検知や人物検知のプログラムも多数公開されており、手軽に画像認識を始めることができます。
OpenCVのインストール
OpenCVをPython環境にインストールするには、以下のコマンドを実行します。
# pipの場合
pip install opencv-python
pip install opencv-contrib-python
# Anacondaの場合
conda install -c conda-forge opencv注意: パッケージ名は
opencvではなくopencv-pythonです。
opencv-pythonはコア(main)モジュールのみを含み、opencv-contrib-pythonは追加(contrib/extra)モジュールも含んでいます。基本的な操作であればopencv-pythonだけで十分です。
OpenCVの実践
OpenCVのインポート
OpenCVをインポートする際は、import cv2と記述します。
import cv2パッケージ名はopencv-pythonですが、インポート時はcv2を使います。これは、OpenCVが元々C言語で開発された際にcvと呼ばれ、その後C++での開発に移行した際にcv2となった経緯によるものです(現在のOpenCVはバージョン4ですが、インポート名はcv2のままです)。
画像の読み込み
画像の読み込みにはcv2.imread()を使用します。
import cv2
# 画像の読み込み
img = cv2.imread("input/fox.jpg")カラー画像は3次元配列として、グレースケール画像は2次元配列として読み込まれます。後述するmodeを指定することで、カラー画像をグレースケールとして読み込むことも可能です。
対応フォーマット
cv2.imread()で読み込めるファイル形式は以下の通りです。
| 種類 | 拡張子 |
|---|---|
| Windowsビットマップ | .bmp,.dib |
| JPEGファイル | .jpeg,.jpg, *.jpe |
| JPEG2000ファイル | *.jp2 |
| Portable Network Graphics | *.png |
| Portable image format | .pbm,.pgm, *.ppm |
| Sun rasters | .sr,.ras |
| TIFFファイル | .tiff,.tif |
mode(読み込みモード)の指定
cv2.imread()の第2引数にmodeを指定することで、任意の形式で画像を読み込むことができます。
import cv2
img = cv2.imread("input/fox.jpg", cv2.IMREAD_GRAYSCALE)主なmodeは以下の通りです。
| mode | 説明 |
|---|---|
IMREAD_UNCHANGED | 画像ファイルの色や精度をなるべく維持して読み込む |
IMREAD_GRAYSCALE | 1チャネルのグレースケールとして読み込む。カラー画像も1チャネルで読み込まれる |
IMREAD_COLOR_BGR | 3チャネルのBGRカラー画像として読み込む。グレースケール画像も3チャネルで読み込まれる |
解析する内容や手法によって必要なデータ形式が異なるため、適切なmodeを選択することが重要です。
まとめ
今回は、OpenCVの概要と画像の読み込み方法を紹介しました。
- OpenCVはオープンソースの画像処理ライブラリで、Pythonでは
import cv2でインポートする - 画像の読み込みには
cv2.imread()を使用する - 第2引数でmode(
IMREAD_GRAYSCALEなど)を指定し、読み込み形式を変更できる