OpenCV 2.2 を Visual C++ 2010 Express で使うための準備から動作確認までの手順とプロジェクトサンプルとプロパティシートサンプル
手順
- OpenCV-2.2.0-win.zip をダウンロードする
- C:\Software\Develop\src に展開する
- CMake を使う
- Source: C:/Software/Develop/src/OpenCV-2.2.0
- Output: C:/Software/Develop/opencvlibrary/OpenCV-2.2.0
- TBB は既に C:\Software\Develop\src\tbb30_20100915oss へ展開している
- BUILD_DOXYGEN_DOCS のチェックを外す.理由は OpenCV 2.1 on VC++ 2010 Express で映像を読み込めないわけと対応策の例 - BiBoLoG で触れた.チェックしたままビルドした事例のスクリーンショットを後に掲載する
- WITH_TBB にチェック
- TBB_INCLUDE_DIR: C:\Software\Develop\src\tbb30_20100915oss\include
- C:/Software/Develop/src/tbb30_20100915oss/include/../lib/ia32
- TBB_LIB_DIR: C:\Software\Develop\src\tbb30_20100915oss\lib\ia32\vc10
- C:\Software\Develop\opencvlibrary\OpenCV-2.2.0.OpenCV.sln を開く
- バッチビルドで ALL_BUILD と INSTALL をビルドする.Debug/Release の両方を選ぶから,合計4つチェックすることになる
- 環境変数 PATH を通す.TBB のも再掲しておく
後の手順をテキストにするのは,コードとプロパティシートとスクリーンショットに代えて,省く.
サンプル「画像読込保存表示」
#include <iostream> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> int main ( int argc, char *argv[] ) { const char *ImageFile = "c:/data/image/sample/lena.png"; const char *SaveName = "output.png"; const char *WindowName = "view"; const int ReturnErrorCode = -1; // 画像読込 cv::Mat img = cv::imread ( ImageFile ); if ( img.empty() ) { std::cout << "画像読込失敗: " << ImageFile << std::endl; return ReturnErrorCode; } std::cout << "画像読込成功: " << ImageFile << std::endl; // 画像保存 if ( cv::imwrite ( SaveName, img ) ) { std::cout << "画像保存成功: " << SaveName << std::endl; }else{ std::cout << "画像保存失敗: " << SaveName << std::endl; } // 画像表示 cv::namedWindow ( WindowName ); cv::imshow ( WindowName, img ); cv::waitKey(); return 0; }
サンプル「プロパティシート」
大抵は imgproc と highgui だけで足りるので,この2つを指定している.他のライブラリは必要になったときに,また別個にプロパティシートを作成すると良かろう.ファイルの配置先は My Documents\Visual Studio 2010\Projects\Property Sheets にがいいだろう.
OpenCV-2.2.0-Debug.props
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup> <IncludePath>C:\Software\Develop\opencvlibrary\OpenCV-2.2.0\include;$(IncludePath)</IncludePath> </PropertyGroup> <PropertyGroup> <LibraryPath>C:\Software\Develop\opencvlibrary\OpenCV-2.2.0\lib;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup> <Link> <AdditionalDependencies>opencv_imgproc220d.lib;opencv_core220d.lib;opencv_highgui220d.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>
OpenCV-2.2.0-Release.props
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup> <IncludePath>C:\Software\Develop\opencvlibrary\OpenCV-2.2.0\include;$(IncludePath)</IncludePath> </PropertyGroup> <PropertyGroup> <LibraryPath>C:\Software\Develop\opencvlibrary\OpenCV-2.2.0\lib;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup> <Link> <AdditionalDependencies>opencv_imgproc220.lib;opencv_core220.lib;opencv_highgui220.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>