▼OpenCVメモ▼
OpenCV


OpenCV
Intel社で開発された画像処理・画像認識用のC言語ライブラリ。
オープンソースであり、商用・非商用を問わず無料で使用できる。



情報源


書籍
OpenCV プログラミングブック



サイト
CSVリファレンスマニュアル
サンプルコード


開発環境を整える


Visual C++ 2008 Express Edition
マイクロソフトの統合開発環境。無償で利用できる。
サイトからダウンロードしてインストール。


Open CV 1.0
OpenCVのパッケージ。無償で利用できる。
サイトからOpenCV_1.0.exeをダウンロードしてインストール。


ライブラリパスの設定
  1. Visual C++を起動。
  2. メニュー「ツール→オプション」を選択してダイアログを開く。
  3. ツリー「プロジェクトおよびソリューション→VC++ディレクトリ」を選択。
  4. 「ディレクトリを表示するプロジェクト」で「インクルードファイル」を選択し、以下のパスを追加。
    C:\Program Files\OpenCV\cv\include
    C:\Program Files\OpenCV\cvaux\include
    C:\Program Files\OpenCV\cxcore\include
    C:\Program Files\OpenCV\otherlibs\highgui

  5. 「ディレクトリを表示するプロジェクト」で「ライブラリファイル」を選択し、以下のパスを追加。
    C:\Program Files\OpenCV\lib



はじめてのOpenCVアプリケーションの作成


はじめてのOpenCVアプリケーションとして画像を表示するだけのプログラムを作成する。



プロジェクトの作成
  1. メニュー「ファイル→新規作成→プロジェクト」
  2. ツリー「Visual C++→Win32」の「Win32コンソールアプリケーション」を選択。
  3. プロジェクト名に「HelloWorld」と入力しOKボタンを押す。
  4. 完了ボタンを押す。
ライブラリの追加
  1. ソリューションエクスプローラのプロジェクト名を右クリックし、プロパティを選択。
  2. ツリー「構成プロパティ→リンカ→入力」を選択。
  3. 追加の依存ファイルにlibファイルを追加。
    cxcore.lib
    cv.lib
    highgui.lib
    cvaux.lib
    cvcam.lib
素材の準備
BMPファイルを1枚、プロジェクトフォルダ(HelloWorld.cppがあるフォルダ)に配置。

Image.bmp



ソースコードの記述
以下のソースコードを記述。
HelloWorld.cpp
#include "stdafx.h"

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int _tmain(int argc, _TCHAR* argv[])
{
    //イメージの読み込み
    IplImage *img=cvLoadImage("Image.bmp");

    //ウィンドウ名の指定
    cvNamedWindow("Image:",1);

    //イメージの表示
    cvShowImage("Image:",img);

    //キー入力待ち
    cvWaitKey();

    //ウィンドウの開放
    cvDestroyWindow("Image:");

    //イメージの開放
    cvReleaseImage(&img);
    return 0;
}


ビルド・実行
メニュー「デバッグ→デバッグ開始」を選択。
画像がウィンドウで表示され、キーを押すと終了となる。


ビルド失敗の回避方法
  1. 文字コードに関するwarningが「C:\Program Files\OpenCV\cv\include\cvcompat.h」で出た時は、変更(1文字書き込んですぐ消す等)した後に保存することで解消できる。
  2. 初期状態のargvの型「_TCHAR」はOpenCVの関数に文字列情報として利用しようとしてビルド失敗したら「char」とする。
  3. 引数の指定はソースコード内に以下のような記述を追加すると楽。
    argc=3;
    argv[1]="Image0.bmp";
    argv[2]="Image1.bmp";

サンプル


「OpenCV」で何ができるのかリストを作りながら学習中。
サンプルコードは「opencv.jp」を参照。


ビクセルデータの直接アクセス
IplImage


部分画像のシャッフル
cvSetImageROI,cvResetImageROI



画像の連結
cvSetImageROI,cvResetImageROI


画像のコピー
cvCopy


画像形状の変形
cvReshape





−戻る−