CMake生成OpenCV解決方案&&編譯OpenCV原始碼

-牧野-發表於2017-01-05

生成OpenCV工程需要用到CMake,所以第一步需要下載CMake軟體,下載連結:CMake下載

目前最新的版本是3.7.1,這裡選擇下載Platform下的Windows win32-x86 ZIP,大小21M:



把下載完成的壓縮包解壓出來就可以了,不用安裝。開啟解壓後的路徑下…\cmake-3.7.1-win32-x86\bin\cmake-gui.exe,會彈出如下CMake視窗:



接下來就可以安裝步驟一步一步生成OpenCV工程了。


1.  點選右側“Browse Source”按鈕輸入OpenCV原始碼所在路徑:




2. 點選右側“Browse  Build”輸入生成的OpenCV工程存放目錄:




3. 點選左下角“Configure”按鈕生成工程:



點選之後彈出如下對話方塊,CMake會自動選擇本機已經安裝的目標編譯器,一般情況下預設即可,單擊“Finish”:



如果不幸中招了,錯選了本機沒有的編譯器,則會生成失敗。要更改預設的目標編譯器,點選CMake左上角的File->Delete Cache ,就會把之前選擇的清除掉再重新選擇。



如果選擇的編譯器沒錯,點選“Finish”後就會執行生成:



大概需要2分鐘,生成完成:




4. 第一次“Configure”生成之後,還需要第二次執行生成,再次單擊“Configure”按鈕,執行第二次生成:



第二次生成完成:




5. 經過兩次“Configure”之後,點選“Generate”按鈕生成最終的OpenCv解決方案:



出現“Generate done”表示生成完成:



經過以上5個步驟之後就可以去剛才選擇的OpenCV工程存放目錄下檢視生成的專案,我這裡是在D:\Software\MyOpenCV 下:



雙擊開啟工程OpenCV.sln,一共有71個專案,我們用的所有的OpenCV函式都是由這個工程生成的,可以在這些專案 裡找到所有OpenCV函式的原始實現,按F5編譯工程:



編譯成功之後會在工程目錄bin->Debug下生成很多個dll動態庫檔案。如果沒對OpenCV工程原始碼修改的話,這些dll檔案跟OpenCV自帶的dll檔案是一樣的,如果要對指定的OpenCV函式進行優化或者功能上的剪下,在更改原始碼之後編譯生成dll檔案,再去呼叫這些dll檔案就行了。


編譯OpenCV原始碼


以最常見的imshow函式為例,找到opencv_highgui專案裡的window.cpp檔案裡的imshow函式實現,在函式開頭加一句話“2017新年快樂!”,並在控制檯輸出(需要加標頭檔案iostream):



之後右鍵opencv_highgui專案->生成,把bin->Debug資料夾下的opencv_highgui2413d.dll替換掉之前OpenCV程式中的opencv_highgui2413d.dll檔案。新建一個工程,測試一下imshow函式的效果:


#include <highgui/highgui.hpp>

using namespace cv;

int main()
{
	Mat image = imread("Test.jpg");
	imshow("Test", image);
	waitKey();
	return 0;
}


執行效果,在輸出圖片的同時,也在控制檯輸出了“2017新年快樂!”,說明對OpenCV函式原始碼的修改起作用了:



相關文章