PS:請參考最新的《Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)》,絕對給力!由於Opencv版本升級,大多人開始用新版本VS,等等,這篇已經過時了,而且當時沒有在文中加入更合適的簡介的配置方法,所以有一些東西不再適用。重寫一篇,,無論是Win7還是Win8,無論是VS2010, VS2012, 還是VS2013,無論是Opencv 2.x.x,方法都是一樣的,只是配置思路和操作流程不同而已。
如果想重新編譯Opencv,可以參考本文,不過新版本也許不用配置ttb了吧,沒試過。如果有需求再玩玩自己編譯的。
posted @ 2013-01-11 19:54 from [FreedomShe]
重編譯的好處:可以調試的時候看OpenCV的源代碼。
重編譯要得到的東西:Debug版本和Release版本的dll,lib,頭文件。(dll添加到環境變量里,運行時用,自己編譯的dll調試時可以跟蹤到Opencv的源碼內;lib和頭文件配置到編譯器里)
PS:如果只是使用Opencv而不需要跟蹤源碼,則使用Opencv自帶的庫文件即可。跳到5配置Opencv開發環境,對應的文件都在..\opencv\build\目錄下,其中dll(bin目錄),lib目錄在平台文件夾下如..\opencv\build\ x86\vc10。
本機Win7 64位系統,裝有VS2012,以編譯32位的Opencv庫為例,要編譯64位庫需要注意選擇64位的配置。
1 下載Opecv,CMake,TBB並安裝
下載OpenCV2.4.3:http://opencv.org/downloads.html,解壓到D:\Program Files\
下載CMake2.8.10:http://www.cmake.org/cmake/resources/software.html,安裝
下載tbb41_20121003oss:http://threadingbuildingblocks.org/download,解壓到D:\Program Files\
2 配置TBB環境變量
Path里添加:D:\Program Files\tbb41_20121003oss\bin\ia32\vc11
bin目錄內ia32表示要編譯32位工程,intel64表示要編譯64位工程,vc11表示VS版本為2012
3 用CMake生成VS2012的OpenCV工程
新建文件夾OpenCVProject:D:\Program Files\OpenCVProject(用於存放自己的OpenCV編譯工程)。
打開CMake,"Browse Source..."選擇Opencv的目錄D:/Program Files/opencv(內有CMake的組態檔"CMakeLists.txt"),"Browse Build..."選擇剛才自己新建的工程存放路徑"D:\Program Files\OpenCVProject"。點擊Configure按鈕,在出現的對話框中選擇Visual Studio 11(如果編譯64位dll注意選擇64位VS11配置),默認Use default native compilers,Finish繼續。
稍等片刻出現該圖
第一輪配置完后往下拉,勾選WITH_TBB,點擊Configure進入第二輪。
修改紅色部分TBB路徑為D:/Program Files/tbb41_20121003oss/include,再次點擊Configure;繼續點擊Configure,直到沒有紅色標記。
點擊Generate生成Opencv工程,退出CMake。
4 用Opencv VS2012工程編譯生成自己的Opencv庫
打開生成的Opencv工程,選擇CMakeTargets下INSTALL,右鍵“生成”,生成Debug版dll,lib。
切換編譯模式為Release模式,重復上一步生成Release版dll,lib。
上面兩步后就能看到最終Debug版和Release版的dll,lib,以及文檔目錄doc,頭文件目錄include(bin內為兩個版本dll,lib內為兩個版本lib)。
目標達成,在D:\Program Files\OpenCVProject\install內有我們所要的dll,lib,include頭文件,有了這些就可以進行Opencv開發與源碼跟蹤了。跟dll關聯的源代碼在Opencv安裝目錄D:\Program Files\opencv\modules內。
我習慣將將D:\Program Files\OpenCVProject\install拷貝到D:\Program Files\opencv\下,並將install重命名為vc11x86。而此時D:\Program Files\OpenCVProject沒有用了,但是不能刪除,否則無法跟蹤源碼,占用6G多空間,可以通過VS2012的“清理解決方案”來減到3G多。
5 配置Opencv開發環境
在環境變量Path里添加:D:\Program Files\opencv\vc11x86\bin。
6 編寫測試工程
6.1 打開VS2012,新建控制台應用程序TestOpencv。
6.2 配置包含目錄和庫目錄
項目->xxx屬性->VC++目錄->包含目錄,添加D:\Program Files\opencv\vc11x86\include
項目->xxx屬性->VC++目錄->庫目錄,添加D:\Program Files\opencv\vc11x86\lib
項目->xxx屬性->鏈接器->輸入->附加依賴項,添加lib文件名列表如下圖。
對於配置方案為Debug的配置,添加:
opencv_calib3d243d.lib opencv_contrib243d.lib opencv_core243d.lib opencv_features2d243d.lib opencv_flann243d.lib opencv_gpu243d.lib opencv_highgui243d.lib opencv_imgproc243d.lib opencv_legacy243d.lib opencv_ml243d.lib opencv_nonfree243d.lib opencv_objdetect243d.lib opencv_photo243d.lib opencv_stitching243d.lib opencv_ts243d.lib opencv_video243d.lib opencv_videostab243d.lib
對於Release配置,添加
opencv_calib3d243.lib opencv_contrib243.lib opencv_core243.lib opencv_features2d243.lib opencv_flann243.lib opencv_gpu243.lib opencv_highgui243.lib opencv_imgproc243.lib opencv_legacy243.lib opencv_ml243.lib opencv_nonfree243.lib opencv_objdetect243.lib opencv_photo243.lib opencv_stitching243.lib opencv_ts243.lib opencv_video243.lib opencv_videostab243.lib
Opencv的dll和lib中,末尾帶d的就是Debug版本。
6.3 添加測試代碼
修改TestOpencv.cpp,代碼為:
#include "stdafx.h" #include <opencv2\opencv.hpp> using namespace cv; using namespace std; int main() { Mat img = imread("c:/pp.jpg"); if(img.empty()) { cout<<"error"; return -1; } imshow("pp的靚照",img); waitKey(); return 0; }
將要顯示的圖片保存為c:/pp.jpg,編譯運行,顯示出圖片。
通過設置斷點發現,能夠跟蹤進入Opencv內部函數。