2010-12-03
OpenCV 2.1 on VC++ 2010 Express で映像を読み込めないわけと対応策の例
読み込めないわけ
さて,映像ファイルを読み込めない - BiBoLoG で映像を読み込めないことを挙げた.VC++ 2010 のメジャーバージョン番号は10であるにも関わらす,9のライブラリを読み込もうとするコードが問題だった.ソースを msvcr90 で検索すれば ffopencv.cpp に行き当たる.
- 「_MSC_VER >= 1500」のとき「#pragma comment(lib, "libmsvcr90d_.a")」している
- libmsvcr100d_.a という文字列は影も形もない
こういうわけで,Visual Studio 2010 では無理なんだ.
読み込める版は,リビジョンは?
この問題が対処されたのはリビジョン3029.Diff of /trunk/opencv/interfaces/ffopencv/ffopencv.cpp を確認しよう.ごっそり削られて「extern "C" { __declspec(dllexport) unsigned int __lc_codepage = 0; }」が追加されている.SVN コメントには
fix the problem with various versions of MSVCRT* in opencv_ffmpeg (ticket #286)
とあって,これが今回探していた「問題が対処されたリビジョン」の変更境界だと分かる.
確認
リビジョン選択
タートスSVNでリビジョングラフを見て,r3110 を選んだ.表示されるリビジョン番号の表示がどういう基準かは知らない.OpenCV 2.1 が r2995 相当らしいから,これより後で,かつ,r3029 以降を探すと r3110 だった.
docs\html\html\html\html\html\html\html\html\html\html\html\html\html\html\... と延々掘る OpenCV ビルドに注意
CMake を操作するとき,BUILD_DOXYGEN_DOCS のチェックを外して対応する.外さないままどうなるかは,各自が試して確認すればよいと思うから,記述を省略する.PC が壊れるわけじゃないし.
ファイル構成の違いに注意
OpenCV 2.2 へ向けて,ファイル構成が一変している.Momma's Wiki OpenCV/SVN版/従来のヘッダの廃止 - include/opencv/cv.h等の従来使われてきたヘッダの廃止 モ... にまとめられている.OpenCV ビルド後,どのライブラリをリンクするか,よく考える.
OpenCVr3110debug.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 /> <ItemDefinitionGroup> <ClCompile> <AdditionalIncludeDirectories>C:\Software\Develop\opencvlibrary\OpenCV2.1\include</AdditionalIncludeDirectories> </ClCompile> <Link> <AdditionalLibraryDirectories>C:\Software\Develop\opencvlibrary\OpenCV2.1\lib</AdditionalLibraryDirectories> <AdditionalDependencies>cxcore210d.lib;highgui210d.lib;cv210d.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>
結果
- 14 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=opencv+2.1+vc++
- 13 http://www.google.co.jp/
- 10 http://twitter.com/
- 9 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLL_jaJP317JP317&q=opencv+2.2
- 7 http://webcache.googleusercontent.com/search?q=cache:BrMG0ssPCo8J:d.hatena.ne.jp/Guernsey/20101203/1291340623+opencv+cpp+ファイルが読めない&cd=6&hl=ja&ct=clnk&gl=jp&client=firefox-a&source=www
- 6 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=OpenCV+2.1+&aq=f&aqi=g10&aql=&oq=&gs_rfai=
- 5 http://oz-log.blogspot.com/2011/02/opencvcuda-tbb.html
- 5 http://www.google.co.jp/search?client=firefox-a&rls=org.mozilla:ja:official&channel=s&hl=ja&source=hp&q=visual+studio+c+opencv&lr=&btnG=Google+検索
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=15&cts=1331020375390&ved=0CLQBEBYwDg&url=http://d.hatena.ne.jp/Guernsey/20101203/1291340623&ei=ZrtVT9efGKHumAW-hoTaCQ&usg=AFQjCNEhw4xHe1KUWgyqPhOOGCLCObHHzQ&sig2=1ajmw1I6NA9XDGUlSZ
- 4 http://green.search.goo.ne.jp/search?MT=OpenCV+2.3.1+VS2010+Express+問題&OE=UTF-8&mode=0&isGreen=true&IE=UTF-8&from=query