1,參考博文
Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重編譯OpenCV
【OpenCV入門教程之七】 玩轉OpenCV源代碼:生成OpenCV工程解決方案與OpenCV源碼編譯
opencv在vs2012下重編譯詳細教程——解決按f11進入不了源代碼
感謝前人的幫助,自己使用的軟件版本和各博主的不完全一致,不同的軟件版本重編譯,配置方法並不一致,因此要兼聽則明。在操作過程中肯定會出現和博客中不一致的情況,要多使用搜索引擎,參考他人的解決辦法。
2,工具
-
cmake3.5.0
CMake是一個跨平台的安裝(編譯)工具,可以用簡單的語句來描述所有平台的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。只是 CMake 的組態檔取名為 CmakeLists.txt。Cmake 並不直接建構出最終的軟件,而是產生標准的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建構方式使用。這使得熟悉某個集成開發環境(IDE)的開發者可以用標准的方式建構他的軟件,這種可以使用各平台的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的區別之處。
-
OpenCV2.4.10
-
visual studio 2010
-
注意:新版本不需要TBB
3,重編譯目的,流程
現階段主要是在調試的時候直接F11查看OpenCV源代碼。利用官方編譯好的動態鏈接庫也可以完成OpenCV所有功能,但是不能方便的查看源代碼,所以需要在本地編譯生成鏈接庫。
主要流程:
-
Cmake編譯OpenCV源代碼,生成visual studio C++下的解決方案(標准的構建檔,還需要根據平台進一步編譯)。
-
利用visual studio進一步編譯成具體的二進制生成文件,如dll,lib。
-
在visual studio中配置生成的OpenCV庫文件。
4,Cmake編譯OpenCV源代碼,生成visual studio C++下的解決方案
參考上述任一篇博文即可,不再贅述。
需要注意的地方:
-
Cmake選擇源代碼的路徑,定位到CMakeLists.txt所在的文件夾。第一篇博文OpenCV2.4.3直接選擇到D:/Program Files/opencv根目錄,而后續包括本文用的OpenCV2.4.10都是定位到D:\Program Files\opencv\sources文件夾。不同版本CMakeLists.txt所在位置不同。
-
編譯平台的選擇,根據自己的VS版本需要選擇默認的Win32或者Win64(x64)平台。
-
兩次點擊Configure,再次點擊Generate生成項目工程。
5,利用visual studio進一步編譯成具體的二進制生成文件
打開OpenCV.sln工程,注意不要着急生成。
點擊Win32旁邊的下拉菜單,打開配置管理器,默認情況下,IANSTALL項目是沒打勾的,一定記得打上,不然待會配置時怎么都找不到install這個文件夾,也就找不到include,opencv,opencv2,然后右鍵ALL_BUILD,點擊生成。
如果沒打勾已經生成了文件,只需要重新把勾打上,然后重新生成解決方案。
Debug切換到Release模式下,重新打勾生成。
6,在visual studio中配置生成的OpenCV庫文件
(1),配置環境變量
Path下兩個路徑D:\Program Files\opencv2410\opencv\vc10solution\bin\Debug;D:\Program Files\opencv2410\opencv\vc10solution\bin\Release(本人剛才生成的解決方案目錄文件,$解決方案$\bin\Debug...Release)
(2),添加新的屬性表
屬性管理器中,添加新的項目屬性表,命好名並保存下來。Debug和Release的附加依賴項會沖突,所以Debug和Release不能用同一個屬性表。
Debug:
VC++目錄>包含目錄:D:\Program Files\opencv2410\opencv\vc10solution\install\include
D:\Program Files\opencv2410\opencv\vc10solution\install\include\opencv
D:\Program Files\opencv2410\opencv\vc10solution\install\include\opencv2
VC++目錄>庫目錄:D:\Program Files\opencv2410\opencv\vc10solution\lib\Debug
鏈接器>輸入>附加依賴項:
opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_objdetect2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_nonfree2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_videostab2410d.lib
Debug:
VC++目錄>包含目錄:D:\Program Files\opencv2410\opencv\vc10solution\install\include
D:\Program Files\opencv2410\opencv\vc10solution\install\include\opencv
D:\Program Files\opencv2410\opencv\vc10solution\install\include\opencv2
VC++目錄>庫目錄:D:\Program Files\opencv2410\opencv\vc10solution\lib\Release
鏈接器>輸入>附加依賴項:
opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_objdetect2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_nonfree2410.lib
opencv_ocl2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_superres2410.lib
opencv_videostab2410.lib