OpenCVとは[入門]
はじめに
本記事ではIntelが開発したライブラリである「OpenCV」について解説します。そもそもOpenCVとは何か、OpenCVができることやその特徴、そしてWindowsとMacでのインストール方法などをご紹介させていただきます。
OpenCVとは
OpenCV(Open Source Computer Vision Library)とはディープラーニングできる、画像・動画に関する処理機能をまとめたOSSのライブラリです。誰でも無料で使う事ができるので、趣味でも商業目的でも利用することができます。また、OpenCVはWindowsやMac、Linux、iOS、AndroidなどさまざまなOSに対応しています。
OpenCVで出来ること
OpenCVは様々な便利な機能をもっています。機能別にどのような事が出来るのかを以下にまとめました。
画像の読み込み・表示
普段目にしている画像というのは、コンピューターからしたら数値の羅列です。その数値の羅列を読み込みプログラム内で使用できるようにリスト化してくれます。
画像の作成・保存
画像の読み込みだけではなく画像の作成や保存、画像処理なども行えます。
画像の編集
画像を元にディープラーニングをする場合、非常に多くの教師データを学習させる必要があります。そこで1つの画像に対してOpenCVのトリミングやリサイズ、画像の回転機能を用いることで全く異なるピクセル配置のデータとして扱う事ができるのでデータの水増しをすることが出来ます。他にもモザイク処理やマスク処理、2枚の画像を合成することも可能です。
ノイズの除去
全体にノイズが乗っている状態だと機械学習の制度に影響する場合があります。そのため、画像解析の前処理としてノイズの除去も行うことが出来ます。
グレースケールへの変換
ディープラーニングではほとんどの場合膨大なメモリを必要とします。そのためマシンのリソース不足も念頭に置かなければなりません。そこで画像を解析する前に画像のデータをグレースケールに変換し計算量を減らすことでマシンへの負荷を減らすことが出来ます。
テンプレートマッチング
テンプレートマッチングとは画像の中から特定の画像と類似する部分を見つけ出す処理です。フォルダ内の写真と同一人物かを判定する際などに用いられます。
物体の検出
解析する画像の中にある特定の物体のカテゴリーや位置を判別することを物体検出と言います。例えば、ディープラーニングを用いてある看板の画像データを学習させることでその看板データを読み取り、位置を特定しクーポン券やWEBサイトを表示するという事も出来ます。
OpenCVの特徴
上記のような機能が備わっているOpenCVですが、どのような特徴があるかをご紹介させていただきます。
画像処理の準備が出来る
画像の解析には必ず前処理が必要です。前処理とはマシンが学習しやすいようにデータを整えてあげることを言います。先ほども述べたノイズ処理や統計処理を行う事で、より精度の高い機械学習をさせることができます。OpenCVはそのような作業を比較的簡単に行うことが出来ます。
様々なライブラリとの組み合わせが可能
Pythonには高機能な数値計算のライブラリが無数に備わっていて、それらとOpenCVを組み合わせ活用することにより、高精度の画像処理を行うことが出来ます。
AR・VRの開発ができる
OpenCVは物体の位置情報や動きの解析、物体追跡などを行う事ができるので、ARやVRの開発のハードルを下げることが出来ます。
OpenCVをインストールする方法
OpneCVはPythonで画像認識のプログラムを作成する際によく使われるので、それを前提としてWindowsとMacでのインストール方法を解説します。
Windowsでのインストール
Windowsの場合はpipでセットアップすることが可能です。コマンドプロンプトかPowerShellで以下のコマンドを入力します。
numptyなどの依存パッケージもまとめてインストールされます。もしエラーが出る場合は下記コマンドでpipをアップデートします。
Macでのインストール
Macの場合はhomebrewを使ったインストールが簡単です。事前にhomebrewをインストールしておきましょう。
まずは最新版のPythonをインストールします。
PythonでOpenCVを動かす際にはnumptyのインストールが必須になります。そこで下記コマンドを入力しましょう。
フォーミュラと呼ばれるインストール、ビルド方法が書かれたスクリプトをOpenCV用に追加します。下記のコマンドを入力します。
最後にOpenCVをインストールします。
おわりに
上記の通りコンピューターに画像解析・認識させるのにOpenCVはとても便利な機能をたくさん持っています。機械学習やディープラーニングに興味がある方は、まずは画像や動画の処理を通して実際にプログラムを組んでみることから始めるとよいでしょう。