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

シェアする

  • このエントリーをはてなブックマークに追加
最近の記事
  • 10/21 【C#】寸法線の描画
  • 10/21 【C#】GraphicsPathの領域取得
  • 10/20 【C#】GraphicsPathの描画
  • 10/18 【C#】GraphicsPath
  • 10/17 【C#】Bitmap画像データの拡大縮小
  • 10/15 【C#】画像の座標系
  • 10/14 【C#】画像の上下左右反転、90,180,270度回転
  • 10/3 【C#】SplitContainerのPanel固定方法
  • 9/7 【Neural Network Console】学習データの出力方法
  • 9/3 Deep Learning向け学習画像撮り込みソフト公開
  • 9/1 【Neural Network Console】新規画像のDataset作成方法
  • 8/28 【Neural Network Console】GUI表示スケールの変更
  • 8/22 【Neural Network Console】CPU/GPU処理の設定切替
  • 8/21 【Neural Network Console】Learning Rate(学習率)の設定
  • 8/20 ソニーの無償AIソフト Neural Network Consoleの入手ダウンロード、インストール
  • 8/20 Deep Learning
  • 8/20
  • 8/19 古いバージョンのVisual Studio Community/Expressの入手ダウンロード
  • 8/19 CUDAの入手、ダウンロード、インストール方法
  • 8/17 【C#.NET】マイクロソフト仕様のアフィン変換
  • 8/5 【C#】ファイルを開くダイアログボックスの表示
  • 8/2 キャノンプリンターのCDトレイはどこ?!
  • 7/6 【参考書籍】画像処理・機械学習プログラミング OpenCV 3対応
  • 6/20 【Python,matplotlib】動くグラフをAnimationGifに保存する方法
  • 6/17 シグモイド関数の微分
  • 6/15 シグモイド関数
  • 6/13 合成関数の微分
  • 6/12 WordPressで数式エディタ風に数式を入力したい
  • 6/11 PythonをVisual Studioでインストールする方法
  • 6/9 【Python】OpenCVをAnacondaでインストール(Windows編)
  • 6/6 【Python】Anacondaで複数バージョンの環境切り替え
  • 6/6 画像センシング展2017に出展します。
  • 6/1 【Office365】Web版Outlookのフォントサイズ変更
  • 6/1 【Anaconda】モジュールのアップデートでエラー発生
  • 6/1 【Anaconda】コマンドリストの表示
  • 5/29 Windows10パソコン購入
  • 5/24 Anacondaのアンインストール
  • 5/24 【Jupyter Notebook】新規プログラムの作成
  • 5/23 【Python】開発環境の構築
  • 5/23 Pythonはじめました
  • 4/6 【Office365】Web版Outlookのスレッド表示を解除する方法
  • 4/5 【Excel】フーリエ解析(FFT)
  • 3/20 Canny edge detection
  • 3/20 【Excel2016】分析ツールの表示
  • 3/5 【Visual Studio】黒い背景色を白に変更する方法
  • 2/8 【Windows10】拡張モニタに表示されたウィンドウを元に戻す
  • 2/7 複素数の計算
  • 1/18 【Excel】棒グラフの横軸の目盛を0始まりにする
  • 1/16 【Excel】フーリエ変換
  • 1/6 【OpenCV】疑似カラー(カラーマップ)

  • 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