目次
OpenCV入門!特徴を解説
OpenCVとはインテル株式会社が提供しているオープンソースのコンピューター・ビジョン・ライブラリです。
OpenCVは正式名称を「Open Source Computer Vision Library」という、画像や動画に関する処理機能を搭載したライブラリとなっています。
また、オープンソースとなっているためさまざまな用途で利用でき、BSDライセンスで配布されているため商用利用も可能です。
OpenCVでできること
OpenCVにはコンピュータで画像や動画を処理するさまざまな機能が搭載されています。
OpenCVはデータ構造や行列演算などのcore、highgui、videoi、imgcodecsをベースにしたあらゆる機能が提供されています。
たとえば、フィルタ処理や行列演算、特徴点抽出、オブジェクト追跡、領域分割といった機能を利用することができます。
OpenCVを使用する4つのメリット
OpenCVを使用するメリットをご紹介します。
OpenCVは誰でも無料で利用することができるオープンソースのライブラリです。OpenCVを導入することにより、画像の切り出しや編集、動画の中にいる物体の動きなどを識別できるようになります。
ここではOpenCV入門として、OpenCVを使用する4つのメリットをご紹介します。
OpenCVを使用するメリット1:インストール方法が簡単
OpenCVはインストール方法が簡単というメリットがあります。
PythonでOpenCVを使用する場合、Python向けのOpenCVには専用パッケージが用意されているため、モジュールをインストールするだけというシンプルな方法でインストールできます。
具体的な方法としては、Windowsであればpipコマンド、macOSの場合はbrewコマンドを入力するだけでインストールできます。
OpenCVを使用するメリット2:画像処理の前処理ができる
OpenCVは画像処理の前処理ができるというメリットがあります。
OpenCVでは画像の表示だけでなく、リサイズやトリミングといった機械学習の前処理で行われる画像の編集も可能です。
機械学習では学習に用いる画像をそのまま使用すると、不要なものが含まれたままのため学習の精度が下がるケースもあります。そのため、事前に画像を加工する前処理が必要になります。
OpenCVを使用するメリット3:いろいろなライブラリと組み合わせられる
OpenCVはいろいろなライブラリと組み合わせられるというメリットがあります。
Pythonには機械学習や人工知能開発に活用できるさまざまなライブラリが用意されています。たとえば、ScipyやMumpyとOpenCVを組み合わせて利用することで、さらに高精度の画像処理が可能になります。
また、ScipyやMumpyは初心者でも扱えるライブラリとなっています。
OpenCVを使用するメリット4:VRやARのコンテンツ作成ができる
OpenCVはVRやARのコンテンツ作成ができるというメリットがあります。
OpenCVを利用することで物体の位置情報や物体追跡などができるため、ARやVRなどのコンテンツ作成にも利用されることがあります。
たとえば、Unityには「OpenCV for Unity」というプラグインを利用することもできるため、ARやVR開発を簡単に行えるようになります。
OpenCVでの画像処理入門!方法8つ
OpenCVでの画像処理方法をご紹介します。
OpenCVを利用した画像処理を行いたい場合、どのような手順で処理を行なっていけばよいのでしょうか。
ここでは画像処理入門として、OpenCVでの画像処理方法についてご紹介していきますので、OpenCVを利用する際の参考にしてみてください。
OpenCVでの画像処理方法1:OpenCVのインストール
OpenCVでの画像処理を行う場合、まずはOpenCVのインストールを行いましょう。
OpenCVのインストール方法はWindowsやmacOSなど、OSによって異なります。Windowsの場合はコマンドプロンプトでpipコマンド使えばセットアップすることができます。
また、macOSの場合はhomebrewを使用してコマンドを入力することで、簡単にインストールできます。
OpenCVでの画像処理方法2:画像の読み込み・書き込み
OpenCVでの画像処理を行う場合、画像の読み込み方法と書き込み方法を押さえましょう。
画像を読み込む場合、「cv2.imread」で画像読み込みができます。読み込み可能なファイル形式は「jpg」「bmp」「png」「pgm」「ppn」「pbm」「dib」「jp2」「tf」「tiff」「ras」「sr」となっています。
また、画像の書き込みは「cv2.imwrite」で出力できます。
OpenCVでの画像処理方法3:画像の表示
OpenCVでの画像処理を行う場合、画像の表示方法を押さえましょう。
画像をウィンドウに表示する場合は、「cv2.imshow()」を用いることで読み込んだ画像ファイルを表示することができます。
引数には「○○.png」など、表示したい画像ファイル名が入ります。
OpenCVでの画像処理方法4:画像の圧縮
OpenCVでの画像処理を行う場合、画像の圧縮方法を押さえましょう。
PythonでOpenCVを利用する場合、画像のエンコード(圧縮)も可能です。「cv2.imencode」を用いることで画像を圧縮できます。
また、デコード(復元)する場合は「cv2.imdecode」を用いることで、元通り復元することができます。
OpenCVでの画像処理方法5:画像の情報取得
OpenCVでの画像処理を行う場合、画像の情報取得方法を押さえましょう。
PythonでOpenCVを利用する場合、読み込んだ画像データはNumPy配列に変換されます。そのため、画像の高さや幅、チャンネル数、画素数などの情報を取得する場合には、NumPy配列のshape属性を利用することで画像の情報を取得することができます。
OpenCVでの画像処理方法6:画像の部分処理
OpenCVでの画像処理を行う場合、画像の部分処理方法を押さえましょう。
画像処理には画像の一部分だけに処理を施す部分処理があります。PythonでOpenCVを利用する場合、NumPyのスライスを用いることで、画像の一部分だけ黒塗りするなどの処理を施すことが可能です。
OpenCVでの画像処理方法7:画像の空間フィルタリング
OpenCVでの画像処理を行う場合、画像の空間フィルタリング方法を押さえましょう。
空間フィルタリングとは平滑化で画像をぼかしたり、輪郭を検出したりすることです。画像をぼかすなら「cv2.filter2D」や「cv2.Blur」で平均値フィルタが実装できます。
また、輪郭検出を行うなら「cv2.filter2D」を利用することで、一次微分フィルタやPrewittフィルタなどが実装できます。
OpenCVでの画像処理方法8:画像の濃度変換
OpenCVでの画像処理を行う場合、画像の濃度変換方法を押さえましょう。
OpenCVでヒストグラム拡張などの線形濃度変換をする場合、「cv2.imread」で読み込み、「cv2.cvtColor」でグレースケール変換し、さらに細かく変換をかけていくことで実装することができます。
線形濃度変換を行うことで画像のコントラストを調整し、より画像を視認しやすいように調整することができます。
OpenCVでの動画処理入門!方法4つ
OpenCVでの動画処理方法をご紹介します。
OpenCVを利用した動画処理を行いたい場合、どのような手順で処理を行なっていけばよいのでしょうか。
ここでは最後に動画処理入門として、OpenCVでの動画処理方法についてご紹介していきますので、OpenCVで動画処理を利用する際の参考にしてみてください。
OpenCVでの動画処理方法1:動画の読み込み
OpenCVでの動画処理を行う場合、動画の読み込み方法を押さえましょう。
PythonでOpenCVを利用する場合、「cv2.VideoCapture()」で動画ファイルを読み込むことが可能です。引数には動画のパスを指定します。
VideoCaptureは、カメラや動画ファイルから画像データを取得できるクラスとなっており、読み込める動画ファイルの形式には「FLV」や「MP4」「AVI」などがあります。
OpenCVでの動画処理方法2:動画の色追跡
OpenCVでの動画処理を行う場合、動画の色追跡方法を押さえましょう。
色追跡(カラートラッキング)とは、動画から特定の色のみを検出することです。カラートラッキングでは、RGB色空間ではなく数値で同系統の色の範囲を指定しやすいHSV色空間を利用します。
PythonでOpenCVを利用する場合、「cv2.connectedComponentsWithStats()」で2値画像のブロブ解析が可能です。
OpenCVでの動画処理方法3:動画内の移動物体の検出
OpenCVでの動画処理を行う場合、動画内の移動物体の検出方法を押さえましょう。
前述のカラートラッキングにより、移動物体を検出することも可能です。「cv2.connectedComponentsWithStats()」でマスク画像を与えることで、最大面積の領域のみを抽出することが可能です。
この技術を応用することで、動画に複数の同一色の物体があっても、もっとも大きな物体のみを追跡することができます。
OpenCVでの動画処理方法4:物体追跡
OpenCVでの動画処理を行う場合、物体追跡方法を押さえましょう。
OpenCVで物体追跡を行う場合、「パーティクルフィルタ」や「オプティカルフロー」などの手法があります。
ここではそれぞれご紹介していきます。
パーティクルフィルタ
物体追跡にはパーティクルフィルタを実装する方法があります。
パーティクルフィルタ(粒子フィルタ)は、確率分布を粒子の集まりで表現する、時系列データの予測手法です。画像処理の分野では物体追跡に利用されています。
PythonでOpenCVを使用する場合、NumPyでパーティクルフィルタを実装することで特定の物体を追跡することができるようになります。
オプティカルフロー
物体追跡にはオプティカルフローを実装する方法があります。
オプティカルフローは、時間的に連続するデジタル画像の物体の動きをベクトルで表したものです。移動物体の検出や動作の解析などに用いられます。
しかし、オプティカルフローを一意的に求めることは困難なため、一般的には推定によりベクトルを求めます。推測する手法としては、「LucasKanade法」や「Horn-Schunk法」が代表的です。
OpenCVを使って画像処理をしてみよう
OpenCVを活用することで画像処理や動画処理が行えます。OpenCVは画像や動画に関する処理機能をまとめたライブラリです。
ぜひこの記事でご紹介したOpenCVを使用する4つのメリットやOpenCVでの画像・動画処理方法などを参考に、OpenCVを利用してみてはいかがでしょうか。