使用visual studio 2012 編譯opencv2.4.9


  最近,由於需要從opencv源碼部分對opencv中的某個函數進行修改,以提升算法的速度,因此一直在嘗試使用vs2012來編譯opencv。期間不乏多次的失敗。今天通過實驗發現了自己編譯的opencv庫終於可以使用了,不再出現之前出現的鏈接錯誤。現將編譯過程記錄如下,希望可以給需要的人提供思路和幫助。如發現錯誤之處,也請留言指出,謝謝。

  首先,來看看opencv的安裝目錄(如下圖),可以發現有兩個子文件夾。其中build文件夾是已經編譯好的,可以直接使用的,而source文件夾顧名思義就是opencv所有的的源碼了。但是該源碼並不是一個VS的工程文件,因此沒法將整個整個源碼像打開一個vs工程一樣將其打開:

  

  我們現在要做的第一步就是將source中的源碼“解包”(“解包”是什么意思我現在也沒有弄清楚,在某篇博客中看到的)成一個VS2012的項目。需要用到的工具是Cmake。

    (1)下載並安裝好cmake,如下圖所示。(我使用的是3.0版本)

    

 

 

    (2)在cmake中選擇源碼路徑,並選擇將要生成的opencv工程的解決方案的路徑。

    

    (3)路徑設置好之后,點擊Configure按鈕。出現如下情況。根據自己的vs版本選擇對應的即可。(我的是vs2012):

    

    (4)點擊finish后cmake開始工作,結束后出現configure down字樣:

    

    (5)再次點擊一次Configure,紅色部分消失,再次出現configure down:

    

    (6)最后點擊Generate,出現Generating down,完成了opencv的解包:

    

    (7)來看看目標路徑中都生成了什么。這就是我們通過cmake想要得到的vs2012的解決方案。打開Opencv.sln即可在vs2012中打開opencv的整個項目(注意,當前生成的目錄中沒有bin和lib這兩個目錄):

    

  通過上面一步一步詳細的介紹,我門現在終於可以飽覽opencv源碼真容了。我們打開Opencv.sln,在vs2012中打開opencv的項目:

  

  可以看到,vs已經成功加載了opencv的整個項目。在解決方案上右鍵,並在彈出菜單中點擊生成解決方案,等待幾分中的時間:

  待生成成功后,我們再來看看opencv項目目錄,可以看到目錄中多了兩個文件夾lib和bin。這兩個目錄就是我們自己編譯的opencv的庫:

  

  將bin和lib兩個文件夾下的Debug目錄下的文件全部拷貝到opencv的安裝目錄下,覆蓋掉原來的lib和dll文件(這樣的話就不用重新配置環境了)

  

  編寫一段測試程序(我在imshow源碼中增加了一個cout<<“this is a test”<<endl;語句):

#include<opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main() 
{ 
	int i;
   Mat   img = imread("test.jpg"); 
   if (img.empty()) 
   { 
	   fprintf(stderr,"Error:load image failed."); 
	   system("pause");
	   return -1; 
   } 
   namedWindow("image",CV_WINDOW_AUTOSIZE);  
   imshow("image",img);
   waitKey(); 
   system("pause");
   return 0; 
}

  運行后結果如下,可以看到,控制台中輸出了this is a test!:

  

  

  至此,整個opencv的編譯過程到此結束。希望可以給大家幫助!

 

參考博客:

http://www.tuicool.com/articles/f6ZBZv

 

原創博文,轉載請注明出處:http://www.cnblogs.com/xiongmao-cpp/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM