VS2010安裝OpenCV2.1方法

凝霜發表於2011-01-12

版權宣告:轉載時請以超連結形式標明文章原始出處和作者資訊及本宣告
http://neocv.blogbus.com/logs/65020560.html

原文忘記在哪看到的了,此處將原文稍作修改,使其更易閱讀。

前期準備
首先在SourceForge上下載OPENCV 2.1版的原始碼檔案(要下那個.ZIP檔案,那個VS2008只能用於VS2008,有點廢話。。。)
然後我們來到CMAKE的官方網站下載CMAKE的2.8.1版
http://www.cmake.org/files/v2.8/cmake-2.8.1-win32-x86.exe
接下來,我們在http://www.threadingbuildingblocks.org/uploads/77/151/3.0/tbb30_20100406oss_win.zip
這裡下載INTEL TBB 3.0(其實不下這個也可以,官網介紹它是個多核的庫,充分發揮多核效能,OpenCV2.1估計新增加的支援吧,反正都是INTEL自家的東東,裝上研究下也無妨,而且如今的CPU基本都是多核了)
到目前為止,所有的準備工作都已經做好啦(VS2010自己先裝好)

CMAKE過程
接下來,我們按照順序,首先安裝CMAKE 2.8.1,然後解壓OPENCV 2.1到你將要放置OPENCV的地方,接著,解壓INTEL TBB 3.0,我是將OPENCV和TBB資料夾都放在C:/下。
開啟CMAKE 2.8.1,在Where is the source code後面填寫(或者選擇)OPENCV 2.1的安裝目錄,在Where to build the binaries裡填寫你將要編譯好的OPENCV 2.1 FOR VS2010解決方案的資料夾(比如C:/OpenCV/vs2010),接著點選Configure按鈕,如果你剛開始在Where to build the binaries裡填寫的目錄是不存在的,CMAKE將會詢問你是否新建一個以此為名稱的資料夾,點選"是"繼續,在後續出現的對話方塊中選擇Visual Studio 10,下面的選項選擇Use default native compilers,點選Finish繼續。
過30秒左右之後會出現一個配置視窗(此處注意在CMAKE配置的時候是不能夠開啟VS2010的),然後勾選BUILD_SHARED_LIBS,BUILD_TESTS,OPENCV_BUILD_3DPARTY_LIBS,以及下面的WITH_JASPER,WITH_JPEG,WITH_PNG,WITH_TBB(一般這個沒預設選上),和WITH_TIFF選項,勾好後再次點選Configure,之後再配置視窗最上面會出現TBB_INCLUDE_DIR-NOTFOUND字樣的紅色選項,此處為CMAKE找不到INTEL TBB的包含檔案為之所致,將INTEL TBB 3.0裡面的INCLUDE資料夾路徑(注意是INCLUDE,不是INCLUDE裡面的子資料夾)定位到該配置屬性的路徑裡,再次點選Configure,在TBB_LIB_DIR處又會出現紅色一行,此處為INTEL TBB的庫檔案位置,此處必須將路徑定位到含有LIB檔案的位置,比如我的安裝位置是C:/Intel TBB 3.0/lib/ia32/vc10,也就是說,在lib資料夾下會有子資料夾,必須定位到子資料夾對應的VC版本資料夾裡去,這裡由於是配置VS2010,所以我們選擇VC10資料夾,ia32子資料夾是32位系統,此處應根據對應作業系統選擇。
然後,我們再次點選Configure,此時所有紅色行已經變為白色,同時在下方的資訊裡面會有一條為Use TBB:YES的字樣,證明我們已經將INTEL TBB配置完畢,然後點選Generate,完成後在生成資料夾下會出現一個VS2010的解決方案檔案OPENCV.SLN。

VS2010配置
雙擊開啟OPENCV.SLN後,出現OPENCV 2.1的所有工程專案,先不要著急編譯,首先點選Solution Explorer裡面的Property Manager(下面的選項卡),依次展開ALL_BUILD—Debug|Win32—右鍵單擊Microsoft.Cpp.Win32.user,選擇Properties,然後選擇VC++ Directories,在Executable Directories裡面將INTEL TBB 3.0的可執行路徑(bin)填寫到裡面,此處與LIB一樣,必須定位到VC10才可以,例如我的是C:/Intel TBB 3.0/bin/ia32/vc10,將Include Directories定位到Intel TBB的Include資料夾即可無需再往深入定位,在Library Directories裡填寫Intel TBB的LIB檔案位置,定位到VC10資料夾,然後單擊確定之後,將選項卡切回到Solution Explorer。
將編譯模式切換為Debug模式,右鍵單擊Solution OpenCV,選擇Rebuild Solution,編譯後再右鍵單擊INSTALL專案,選擇Build,之後將編譯模式切換為Release模式,重新編譯解決方案,再編譯INSTALL專案,在你的解決方案資料夾裡面會生成bin目錄,include目錄,lib目錄。
在VS2010裡切回到Property Manager,像上面一樣展開Microsoft.Cpp.Win32.user後選擇Properties,然後再VC++ Directories裡面增加OPENCV 2.1的可執行檔案(bin),包含檔案(include/opencv),以及庫檔案(lib),原始檔(src/cv、src/cvaux、src/cxcore、src/highgui等),確定,退出並儲存更改。到此OPENCV 2.1配置完成。
以後每次建立OPENCV專案時需都要在專案裡面新增依賴庫,方法是在解決方案管理器裡面右鍵單擊專案,選擇Properties,然後在Linker裡面選擇Input,在依賴庫裡新增OPENCV的LIB資料夾裡的LIB檔名稱(比如什麼cv210d.dll,根據需要填寫),檔名後面有小寫字母d的為Debug庫,沒有的為Release庫。
原文沒說明的(重要!):作者居然沒說全域性變數的新增!這樣的後果就是編譯完後執行程式會提示缺少DLL檔案。方法是在全域性變數(我的電腦屬性裡)裡新增C:/OpenCV/vs2010/bin和C:/Intel TBB 3.0/bin/ia32/vc10即可。

後記:我按上面方法安裝完後,執行最後還是提示缺少一個叫msvcr90d.dll的檔案,上網GOOGLE了一下,是個VS歷來都有的BUG(沒想到VS2010也沒解決!!!),目前還沒解決,但是不妨礙程式執行,就是每次都提示很是惱人,下面是MSDN上找的解決辦法,還沒來得及翻譯:
Go to  "Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library" and set Multi-threaded Debug (/MTd) did build generated error messages...

then reset "Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library" to Multi-threaded Debug DLL (/MDd) what it was originally, worked.

如果還是不行,試著把安裝VS2010和你建立工程的路徑所在分割槽轉成NTFS格式的。(這招對我不管用,因為我所有分割槽都是NTFS的T_T)

凝霜 注:最好不要修改警告級別。。。保持預設的即可。。。否則。。。錯誤資訊。。。呵呵。。用過Level 4的人懂的,你會有除錯STL的感覺。。。

相關文章