OpenCV2.3

【OpenCV2.3】サンプルプログラム(C言語版)

OpenCV2.3においても、プログラムの作成方法はOpenCV2.2の時とさほど変わりません。

 

ここでは、OpenCV2.3の入手、ダウンロード、インストール、環境設定で紹介している方法でインストールした場合を想定しています。

 

基本的なC言語のプロジェクトファイルの作成方法については

【OpenCV2.2】新規プロジェクトの作成方法(C言語版)

のページを参照して下さい。

このページと異なるのはヘッダファイル(インクルードファイル)のディレクトリの設定方法のみです。

設定方法は

プロジェクトのプロパティで構成プロパティ⇒C/C++⇒全般の追加のインクルードディレクトリに

C:\OpenCV2.3\include

を指定します。

 

簡単なサンプルプログラムは以下の通りです。

// OpenCV23-C-Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"

//プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに
// 『C:\OpenCV2.3\include』を追加のこと
#include "opencv2\\opencv.hpp"
 
#ifdef _DEBUG
    //Debugモードの場合
    #pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_core230d.lib")
    #pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_imgproc230d.lib")
    #pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_highgui230d.lib")
#else
    //Releaseモードの場合
    #pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_core230.lib")
    #pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_imgproc230.lib")
    #pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_highgui230.lib")
#endif

int _tmain(int argc, _TCHAR* argv[])
{

    //画像データの読込
    IplImage* src_img = cvLoadImage("C:\\OpenCV2.3\\samples\\c\\lena.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
    if (src_img == NULL){
        return 0;
    }
 
    //表示ウィンドウの作成
    cvNamedWindow("src");
    cvNamedWindow("dst");
 
    //処理後画像データの確保
    IplImage* dst_img = cvCreateImage(cvGetSize(src_img), src_img->depth, src_img->nChannels);
 
    //画像処理例(ガウシアンフィルタ)
    cvSmooth(src_img, dst_img, CV_GAUSSIAN, 9);
 
    //画像の表示
    cvShowImage ("src", src_img);
    cvShowImage ("dst", dst_img);
 
    //キー入力待ち
    cvWaitKey (0);
 
    //全てのウィンドウの削除
    cvDestroyAllWindows();
 
    //画像データの解放
    cvReleaseImage(&src_img);
    cvReleaseImage(&dst_img);
 
	return 0;
}

サンプルプログラムのダウンロードはこちらより
OpenCV23-C-Sample.zip (Visual Studio 2010 C++ Expressで作成しています。)

 

実行例

OpenCV2.3-C-Language-Sample
OpenCVへ戻る

 

コメント

  1. 初心者 より:

    いつもありがとうございます。
    実は私はいま卒業研究でOpenCVの学習をおこなっているのですが、ぜひakiraさんに御協力をお願いしたいです。
    御忙しいとは思いますが今までのようにアドバイスという形で大丈夫なのでぜひ検討してみてください。
    よろしくお願いします。

  2. 初心者 より:

    いつもありがとうございます。
    「詳解 OpenCV コンピュータライブラリを使った画像処理・認識」 という本を参考にしているのですが、サンプルプログラムがうまくコンパイルできないのですがどうしたらよいでしょうか?(この本で1.0を解説しているため使用しています)

    • akira より:

      最終的にはこのページ
      http://imagingsolution.net/program/how-to-use-library/
      に記載しているように、ライブラリの使用方法を理解して頂くのが一番だと思いますが、
      まずは、どのバージョン、どんなサンプルプログラムでもいいので、OpenCVが動くプログラムを試してみて下さい。
      このページではVer2.3ですが、サンプルプロジェクトで公開しています。
      そしたら、詳解OpenCVなどで公開されているプログラムのmain文(このページでは_tamin)の中身をすり替えれば、動作するはずです。
      また、OpenCVのバージョンによる違いですが、main文の中身はc++インターフェース(cv::とつく関数)を使っていない限り、どのバージョンでも共通で動くと思います。

  3. 初心者 より:

    返信ありがとうございます。さっそく見てみます。
    WEBカメラを用いてリアルタイムで取得した画像の編集を考えているのですがOpenCVの使い方がいまいちわからなく、資料が1.0のものがあったので1.0を使っていました。
    サンプルプログラムなどが置いてあり、初心者にわかりやすいサイトなどがあったら教えていただけないでしょうか。

    • akira より:

      最近のOpenCVのバージョンアップのペースが速いので、なかなか全範囲においても最新バージョンで説明されているものは、みつからなくなりましたね。
      ここややはり、基本を抑えてライブラリの使い方を覚えた方がおススメです。
      OpenCVのVer2.3のときの説明ですが、
      インストール方法
      http://imagingsolution.net/program/opencv/opencv2-3/opencv2-3-downlaod-install/
      から、サンプルプログラムの作成方法
      http://imagingsolution.net/program/opencv/opencv2-3/c-sample-program/
      まで、一応、まとめています。
      これらの説明で、230と書かれている部分を231に置き換えて頂くと、最新のバージョンに対応できると思います。
      USBカメラの使用方法については
      http://opencv.jp/sample/video_io.html
      のページが参考になると思いますが、バージョンが変わると、ヘッダ部分も変わってくるので、その辺が慣れていないとちょっと難しく感じるかも?しれませんね。

      USBカメラの取り込みについても、バージョンが上がるにつれ、改善されてきているので、少なくとも、Ver2.0以降の方が使いやすかった気がします。

  4. 初心者 より:

    返信ありがとうございます。
    わけあってOpenCV1.0を使うことにしました。

    すみませんがこれからまたわからないことがあったら教えていただけませんか?
    OpenCVの関数の説明などをお願いしたいのですが・・・

    • akira より:

      訳があるという事で、強くは言いませんが、いろいろとバグも修正されてきているので、Ver.2.3.1の方がおすすめです。
      もし、OpenCVの環境構築が難しいというのであれば、まずは、一般的にライブラリをどのようにして使えば良いのか?という事を抑えた方が、今後の応用も効くのでいいですよ。
      こちらのページも参考にしてみて下さい。
      http://imagingsolution.net/program/how-to-use-library/
      理解できると、ライブラリを使うときは、*.h、*.lib、*.dllの3種類のファイルをどのように設定すればよいのか?というだけ!と思えてくるので、後が楽です。
      あと、関数の説明ですが、Ver1.0をお使い(C言語で使う場合)であれば、このページ
      http://opencv.jp/opencv-1.0.0/document/
      を見ると、関数ごとの説明がまとまっているので、わかり易いと思います。
      さらに詳しく知りたい場合は、オライリーから発行されている詳解OpenCVという本がおススメです。

  5. 初心者 より:

    最近こちらの記事を参考にさせていただいている者です。
    すみませんが上記の方法を試したところ次のようなエラーメッセージが出たのですが解決方法を教えてはいただけないでしょうか。

    1>—— ビルド開始: プロジェクト: shiken00, 構成: Debug Win32 ——
    1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(268,5): error MSB6006: “link.exe” はコード 1104 を伴って終了しました。
    1>LINK : fatal error LNK1104: ファイル ‘C:\OpenCV2.3\lib\opencv_core230d.lib’ を開くことができません。
    ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

    • akira より:

      まず、お使いのOpenCVはVer2.3でよろしいでしょうか?
      エラーメッセージにあるように『‘C:\OpenCV2.3\lib\opencv_core230d.lib’を開く事ができません』というのは、このopencv_core230d.libがC:\OpenCV2.3\libに無いため、エラーが出ています。
      もし、Ver2.3.1をお使いの場合は、ファイル名がopencv_core231d.libですし、このファイルのあるディレクトリも異なる場合あります。
      その場合は、#pragma commentのファイル名の部分を修正して下さい。

  6. akira より:

    お返事が遅くなり大変申し訳ありません。
    エラーの内容ですが、メッセージの通りに、opencv.hppというファイルがプログラムから見つける事ができないエラーです。
    この記事の内容ではOpenCV2.3.0がインストールされ、
     c:\OpenCV2.3\include\opencv2
    のフォルダ内にopencv.hppのファイルが無いと今回のようなエラーになります。
    まずは、このフォルダ内にopencv.hppのファイルがあるか?ご確認下さい。
    もし、別の場所にファイルがある場合は、VisualStudioで
      プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリ
    の設定を変更して下さい。
    ただ、その場合はlibファイルの場所が異なる可能性もあるので、libファイルの場所もご確認下さい。

  7. 学生T より:

    質問なのですが、上記のサンプルプログラムを実行しようとしたら下記のエラーがでてきました。
    このエラーはどのような意味なのでしょうか。また、解決法はどのようにすればよろしいのでしょうか。
    fatal error C1083: include ファイルを開けません。’opencv2\\opencv.hpp’: No such file or directory

  8. […] 6/29 【OpenCV2.3】サンプルプログラム(C言語版) […]

タイトルとURLをコピーしました