【OpenCV】スタティックリンクライブラリの使用方法

シェアする

  • このエントリーをはてなブックマークに追加
最近の記事
  • 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】疑似カラー(カラーマップ)

  • OpenCVをダウンロードすると、ビルド済みのスタティックリンクライブラリがstaticlibというフォルダ内に格納されているのですが、以前、試した時には、うまく利用する事ができずに、CMakeでビルドしていました。

    OpenCVをスタティックリンクライブラリでビルドする方法

    OpenCVをスタティックリンクライブラリでビルドする方法
    スタティックリンクライブラリを使うと他のPCへ作成した実行ファイルを移植する時にexeファイルをコピーすればOpenCVをインストールする事...

    再度、OpenCV2.4.6で試してみたところ、以下の方法でスタティックリンクライブラリを使用する事ができました。

    まず、こちら↓

    http://sourceforge.net/projects/opencvlibrary/files/opencv-win/

    よりOpenCVをダウンロードします。

    WindowsのVer.2.4.6の場合はOpenCV-2.4.6.0.exeのファイルをダウンロードします。

    ダウンロードしたファイルをダブルクリックすると自己解凍されますが、以下、ルートディレクトリ(c:\ )に解凍した場合を想定して説明します。

    目的のスタティックリンクライブラリは下記フォルダに格納されています。

    opencv
    ├build
    ├x86
    │ ├vc9
    │ ├vc10
    │ │ ├staticlib
    │ ├vc11
    ├x64

    x86やx64、vc9,vc10,vc11は使用する環境に合わせて使用するフォルダを選択します。

    まず、C++のプロジェクトを作成し、プロジェクトのプロパティで、構成すべての構成にし、構成のプロパティ→C/C++→全般→追加のインクルードディレクトリにopencv2のあるフォルダ

    c:\opencv\build\include

    などを指定します。(ファイルの解凍先によりディレクトリが異なります。)

    【OpenCV】スタティックリンクライブラリの使用方法

    次にスタティックリンクライブラリのあるフォルダの設定を行います。

    こちらもプロジェクトのプロパティで、構成すべての構成にし、構成のプロパティ→リンカー→全般→追加のライブラリディレクトリ

    c:\opencv\build\x86\vc10\staticlib

    などを指定します。(ファイルの解凍先や開発環境によりディレクトリが異なります。)

    x86・・・32bitプログラムを作成する場合(OSが64bitでも32bitプログラムは作成可能です。)
    x64・・・64bitプログラムを作成する場合
    (構成マネージャでプラットフォームをx64にするのをお忘れなく。
    分からなければ、64bitOSであっても、まずはx86を使用して下さい。)
    vc9・・・Visual Studio 2008で開発する場合
    vc10・・・Visual Studio 2010で開発する場合
    vc11・・・Visual Studio 2012で開発する場合


    【OpenCV】スタティックリンクライブラリの使用方法

    次に特定の規定のライブラリの無視というのを設定するのですが、これはDebugとReleaseで設定が違うので、構成のプロパティ→リンカー→入力→特定の規定のライブラリの無視の設定

    構成がDebugの場合
    Libcmtd.lib;msvcprtd.lib

    構成がReleaseの場合
    Libcmt.lib;msvcprt.lib

    と入力します。

    【OpenCV】スタティックリンクライブラリの使用方法

    これで、OpenCVを使う準備ができたので、コードを下記のように書きます。

    ここでのポイントはcomclt32.libファイルを追加している部分ぐらい。

    以下、Canny Edge Detectorのサンプルコードです。

    #include "stdafx.h"
    
    //プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに
    // opencv2のあるフォルダ(C:\opencv\build\includeなど)を追加のこと
    #include "opencv2\opencv.hpp"
    
    #pragma comment(lib,"comctl32.lib")
    
    // バージョン名の取得
    #define CV_VERSION_STR CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) CVAUX_STR(CV_SUBMINOR_VERSION)
    
    // libファイル名の最後の部分をReleaseとDebugで分ける
    #ifdef _DEBUG
    #define CV_EXT_STR "d.lib"
    #else
    #define CV_EXT_STR ".lib"
    #endif
    
    //プロジェクトのプロパティ⇒リンカー⇒全般 の追加のライブラリディレクトリに
    // libファイルのあるフォルダ(C:\opencv\build\x86\vc10\libなど)を追加のこと
    #pragma comment(lib, "opencv_core"	CV_VERSION_STR CV_EXT_STR)
    #pragma comment(lib, "opencv_imgproc"	CV_VERSION_STR CV_EXT_STR)
    #pragma comment(lib, "opencv_highgui"	CV_VERSION_STR CV_EXT_STR)
    
    #pragma comment(lib, "zlib"	CV_EXT_STR)
    #pragma comment(lib, "IlmImf"	CV_EXT_STR)
    #pragma comment(lib, "libjasper"CV_EXT_STR)
    #pragma comment(lib, "libjpeg"	CV_EXT_STR)
    #pragma comment(lib, "libpng"	CV_EXT_STR)
    #pragma comment(lib, "libtiff"	CV_EXT_STR)
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        //画像データの読込
        cv::Mat src_img = cv::imread("lena.jpg", -1);
        if (src_img.empty()){
            return -1;
        }
    
        //表示ウィンドウの作成
        cv::namedWindow("src");
        cv::namedWindow("dst");
    
        //処理後画像データ格納用
        cv::Mat dst_img;
    
        //画像処理例(Canny Edge Detector)
        cv::Canny(src_img, dst_img, 100.0, 150.0);
    
    	//画像の表示
        cv::imshow("src", src_img);
        cv::imshow("dst", dst_img);
    
    	//キー入力待ち
        cv::waitKey (0);
    
    	return 0;
    }
    

    (実行結果)

    【OpenCV】スタティックリンクライブラリの使用方法

    サンプルプロジェクトファイルはこちら↓

    OpenCVStaticSample.zip

    (OpenCV2.4.6 + Visual Studio 2010 C++ Expressのサンプルです)

    スタティックリンクライブラリを使うと、Pathの設定が無いので、ちょっと楽!

    OpenCVへ戻る