ITや趣味など気軽に投稿しています。

【Python】OpenCVで画像を読み込む

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_GRAYSCALE1チャネルのグレースケールとして読み込む。カラー画像も1チャネルで読み込まれる
IMREAD_COLOR_BGR3チャネルのBGRカラー画像として読み込む。グレースケール画像も3チャネルで読み込まれる

解析する内容や手法によって必要なデータ形式が異なるため、適切なmodeを選択することが重要です。

まとめ

今回は、OpenCVの概要と画像の読み込み方法を紹介しました。

  • OpenCVはオープンソースの画像処理ライブラリで、Pythonではimport cv2でインポートする
  • 画像の読み込みにはcv2.imread()を使用する
  • 第2引数でmode(IMREAD_GRAYSCALEなど)を指定し、読み込み形式を変更できる