OpenCVで学ぶ画像認識

第2回 OpenCVを使ってみよう

この記事を読むのに必要な時間:およそ 4.5 分

環境設定

では,次に開発環境を構築します。

開発環境は,インストールしたOpenCVのインクルードファイルのディレクトリへパスを張り,リンク先にOpenCVの各ライブラリを加えるだけで簡単にできます。

まずはVisual C++で新規プロジェクトを作成します。メニューバーの「ファイル」から"新規作成->プロジェクト"と選択し,⁠Win32 コンソール アプリケーション」のプロジェクトを作成して,適当なプロジェクト名をつけて下さい。

なお,プロジェクト作成の際,⁠追加のオプション」から「プリコンパイル済みヘッダー」のチェックボックスを外しておいてください。

プロジェクトが作成できたら,メニューバーの「プロジェクト」からプロパティを選択してください。

「構成」「すべての構成」を選択し,左側のツリーから「C/C++」タブを選択し,⁠追加のインクルードディレクトリ」にインストールしたOpenCVのホームディレクトリの下の以下のディレクトリを追加します。

cxcore\include, cv\include, otherlibs\highgui, cvaux\include.

図2 インクルードディレクトリの設定

図2 インクルードディレクトリの設定

今度は,ライブラリへのリンクをはります。⁠リンカ」タブを選択し,⁠追加のライブラリディレクトリ」にOpenCVディレクトリ下の"lib"ディレクトリを追加して下さい(例:C:\Program Files\OpenCV\lib)⁠

続いて,⁠構成」「Debug」に変更し,⁠リンカ」タブを展開した中の「入力」を選択し,⁠追加の依存ファイル」で"cxcore.lib cv.lib highgui.lib cvaux.lib"を追加します。

図3 ライブラリの設定

図3 ライブラリの設定

以上で設定は完了です。詳細なマニュアルなどは,インストールディレクトリのdocsディレクトリ以下にあるので参照して下さい(例:"C:\Program Files\OpenCV\docs")⁠

また,リファレンスマニュアルの日本語訳が以下のサイトで見ることができます。

参考:
OpenCVリファレンスマニュアル(日本語訳)

画像を表示してみよう

それでは,いよいよコーディングに入ります。なお,以下の説明の中で使用している画像は,OpenCVのインストールディレクトリ以下の"\samples\c\lena.jpg"をコードのあるディレクトリへコピーして使用しています。

まずは,画像をファイルから読み込み,表示するプログラムを書いてみましょう。

画像の読み込み・表示プログラム

#include "cv.h"
#include "highgui.h"

int main(int argc, char* argv[])
{
        IplImage* img;  // 画像ファイルポインタの宣言
        char imgfile[] = "lena.jpg";    // 読み込み画像ファイル名

        // 画像の読み込み
        img = cvLoadImage(imgfile, CV_LOAD_IMAGE_COLOR);

        // 画像の表示
        cvNamedWindow ("lena", CV_WINDOW_AUTOSIZE);
        cvShowImage ("lena", img);
        cvWaitKey (0);
        cvDestroyWindow("lena");

        // 画像の解放
        cvReleaseImage(&img);

        return 0;
}

まず始めの2行で"cv.h"と"highgui.h"をインクルードします。

次に画像領域を宣言します。IplImageというのが,OpenCVで使用される画像を表す構造体になります。この構造体には,画像の横幅や縦幅,画像のデータ型,チャネル数など画像を表すのに必要なデータが全て入っています。

cvLoadImage関数で,IplImage構造体に画像データを読み込みます。

OpenCVで読みこむことのできるファイルフォーマットは以下のとおりです。

  • Windows bitmaps - BMP, DIB
  • JPEG files - JPEG, JPG, JPE
  • Portable Network Graphics - PNG
  • Portable image format - PBM, PGM, PPM
  • Sun rasters - SR, RAS
  • TIFF files - TIFF, TIF
  • OpenEXR HDR images - EXR
  • JPEG 2000 images - jp2

次に読みこんだデータを表示させます。

cvNameWindowでは,表示させるためのウィンドウを作成します。第1引き数はウィンドウの識別に用いられる名前です。ウィンドウのタイトルバーに表示されます。

次に,cvShowImageで,読みこんだ画像を先ほど作成したウィンドウに読みこんで表示させています。cvWaitKeyは,何かキーが押されるまで待つという意味です。

最後にcvDestroyWindowでウィンドウを廃棄し,cvReleaseImageで読みこんだ画像のメモリ領域を解放します。

では,コンパイルして実行してみましょう。ウィンドウが開いて,指定した画像が表示できれば成功です。

著者プロフィール

皆川卓也(みながわたくや)

ジェイマジック株式会社のラボに所属する傍ら,慶応義塾大学の博士課程でコンピュータビジョンを研究する社会人ドクター。画像認識とIT技術を融合して新しいソリューションを開発することを生業とする自称テクニカル・ソリューション・アーキテクト。ジェイマジックでは、「顔ちぇき!~誰に似てる?~™」や「SAYL™」のシステムの立ち上げに携わる。

ジェイマジック
URLhttp://www.j-magic.co.jp/
慶応大学 斎藤英雄研究室
URLhttp://www.hvrl.ics.keio.ac.jp/

コメント

コメントの記入