Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重編譯OpenCV

原文鏈接:http://www.cnblogs.com/freedomshe/archive/2013/01/11/win7_vs2012_opencv_rebuild.html


重編譯的好處:可以調試的時候看OpenCV的源代碼。

重編譯要得到的東西:Debug版本和Release版本的dlllib,頭文件。(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下載OpecvCMakeTBB並安裝

下載OpenCV2.4.3http://opencv.org/downloads.html,解壓到D:\Program Files\

下載CMake2.8.10http://www.cmake.org/cmake/resources/software.html,安裝

下載tbb41_20121003osshttp://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

3CMake生成VS2012OpenCV工程

新建文件夾OpenCVProjectD:\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(如果編譯64dll注意選擇64VS11配置),默認Use default native compilersFinish繼續。

p_w_picpath

稍等片刻出現該圖

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

p_w_picpath

修改紅色部分TBB路徑爲D:/Program Files/tbb41_20121003oss/include,再次點擊Configure;繼續點擊Configure,直到沒有紅色標記。

p_w_picpath

點擊Generate生成Opencv工程,退出CMake

4Opencv VS2012工程編譯生成自己的Opencv

打開生成的Opencv工程,選擇CMakeTargetsINSTALL右鍵“生成”,生成Debugdlllib

p_w_picpath

切換編譯模式爲Release模式,重複上一步生成Releasedlllib

p_w_picpath

上面兩步後就能看到最終Debug版和Release版的dlllib,以及文檔目錄doc,頭文件目錄includebin內爲兩個版本dlllib內爲兩個版本lib)。

p_w_picpath

目標達成,在D:\Program Files\OpenCVProject\install內有我們所要的dlllibinclude頭文件,有了這些就可以進行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

p_w_picpath

項目->xxx屬性->鏈接器->輸入->附加依賴項,添加lib文件名列表如下圖。

p_w_picpath

對於配置方案爲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


Opencvdlllib中,末尾帶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編譯運行,顯示出圖片。

p_w_picpath

通過設置斷點發現,能夠跟蹤進入Opencv內部函數。

p_w_picpath


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章