win10 + VS2010 + OpenCV2.4.10重編譯OpenCV開發環境搭建
重編譯的優點:能夠調試的時候看OpenCV的源碼。
重編譯要得到的東西:Debug版本號和Release版本號的dll,lib,頭文件。(dll加入到環境變量里,執行時用,自己編譯的dll調試時能夠跟蹤到Opencv的源代碼內;lib和頭文件配置到編譯器里)
PS:假設僅僅是使用Opencv而不須要跟蹤源代碼,則使用Opencv自帶的庫文件就可以。
跳到5配置Opencv開發環境。相應的文件都在..\opencv\build\文件夾下。當中dll(bin文件夾),lib文件夾在平台文件夾下如..\opencv\build\x86\vc10。
本機Win8.1 64位系統,裝有VS2010。以編譯32位的Opencv庫為例,要編譯64位庫須要注意選擇64位的配置。
1 下載Opecv。CMake,TBB並安裝
下載OpenCV2.4.10:http://opencv.org/downloads.html,解壓到D:\Program Files\
下載cmake-3.2.3-win32-x86:http://www.cmake.org/cmake/resources/software.html。安裝時請勾選上“AddCMake to the system PATH for all users”。
下載tbb43_20150424oss_win:http://threadingbuildingblocks.org/download,解壓到D:\Program Files\
2 配置TBB環境變量
Path里加入:D:\ tbb43_20150424\bin\ia32\vc10
bin文件夾內ia32表示要編譯32位project,intel64表示要編譯64位project,vc11表示VS版本號為2012,vc10代表2010。
3 用CMake生成VS2010的OpenCVproject
新建目錄OpenCVProject:D:\OpenCVProject(用於存放自己的OpenCV編譯project)。
打開CMake,"Browse Source..."選擇Opencv的文件夾D:\opencv\sources(內有CMake的組態檔"CMakeLists.txt")。"BrowseBuild..."選擇剛才自己新建的project存放路徑"D:/OpenCVProject"。
點擊Configurebutton,在出現的對話框中選擇Visual Studio 10(假設編譯64位dll注意選擇64位VS10配置)。默認Use default native compilers,Finish繼續。

第一輪配置完后往下拉。勾選WITH_TBB,點擊Configure進入第二輪。

改動紅色部分TBB路徑為D:\tbb43_20150424oss\include。再次點擊Configure;繼續點擊Configure,
直到沒有紅色標記。
點擊Generate生成Opencvproject,退出CMake。

4 用Opencv VS2010project編譯生成自己的Opencv庫
打開生成的Opencvproject。選擇CMakeTargets下INSTALL,右鍵“生成”,生成Debug版dll,lib。
我08年的老電腦。編譯要十幾分鍾。
。
。

切換編譯模式為Release模式,反復上一步生成Release版dll,lib。

目標達成。在D:\OpenCVProject\install內有我們所要的dll,lib。include頭文件,有了這些就能夠進行Opencv開發與源代碼跟蹤了。
跟dll關聯的源代碼在Opencv安裝文件夾D:\opencv\modules內。
我習慣將將D:\ProgramFiles\OpenCVProject\install復制到D:\opencv\下。並將install重命名為vc10x86。
而此時D:\OpenCVProject沒實用了。可是不能刪除,否則無法跟蹤源代碼,占用6G多空間,能夠通過VS2012的“清理解決方式”來減到3G多。
5 配置Opencv開發環境
在環境變量Path里加入:D:\opencv\vc10x86\x86\vc10\bin
設置后這里可能須要重新啟動下才會成功
6 編寫測試project
6.1 打開VS2012,新建控制台應用程序TestOpencv。
6.2 配置包括文件夾和庫文件夾
項目->xxx屬性->VC++文件夾->包括文件夾,加入D:\ProgramFiles\opencv\vc11x86\include
再加D:\opencv\vc10x86\include\opencv2最后加,D:\opencv\vc10x86\include\opencv,opencv版本號不同,目錄也不同。
項目->xxx屬性->VC++文件夾->庫文件夾,加入D:\ProgramFiles\opencv\vc11x86\lib

項目->xxx屬性->鏈接器->輸入->附加依賴項。加入lib文件名稱列表例如以下圖。
對於配置方案為Debug的配置,Opencv的dll和lib中,末尾帶d的就是Debug版本號。
當中文件名稱帶“2410”表示opencv的版本號號為2 .4.10,針對不同版本號的opencv
加入的文件名稱也不一樣,可通過找到庫的目錄位置,查看詳情:

對於配置方案。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_ml2410d.lib opencv_nonfree2410d.lib
opencv_objdetect2410d.lib opencv_ocl2410d.lib opencv_photo2410d.lib opencv_stitching2410d.lib opencv_superres2410d.lib opencv_ts2410d.lib opencv_video2410d.lib opencv_videostab2410d.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_ml2410.lib opencv_nonfree2410.lib opencv_objdetect2410.lib opencv_ocl2410.lib opencv_photo2410.lib opencv_stitching2410.lib opencv_superres2410.lib opencv_ts2410.lib opencv_video2410.lib opencv_videostab2410.lib
6.3 加入測試代碼
改動TestOpencv.cpp,代碼為:
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat img=imread("pp.jpg");//讀入一張圖片
namedWindow("Test"); //創建一個名為Test窗體
imshow("Test",img); //窗體中顯示圖像
waitKey(5000); //等待5000ms后窗體自己主動關閉
}
