WINDOWS下VS編譯opencv並加載自定義模塊

本人機器是windows x64,VS2013支持64位編譯模塊。windows

opencv編譯安裝步驟

  1. 下載cmake x64 windows 版本,下載opencv 2.4.13,分別解壓至A,B目錄;
  2. 進入A目錄下bin目錄,打開cmake GUI,分別指定opencv源碼路徑和生成工程的存儲目錄D(opencv源碼路徑爲B目錄下的sources文件夾),點擊configuration,選擇對應的vs版本(本人是visual studio 12 win64),再次點擊configuration,直至沒有紅色高亮顯示(本人在操做中狀態欄中會提示版本不對,但彷佛不影響後面操做)。而後點擊generation,生成完成後就能夠關閉cmake了;
  3. CMAKE生成結果:在D目錄中獲得vs的工程。
  4. 用vs打開"ALL_BUILD.vcxproj"工程,對ALL_BUILD分別進行Debug和Release模式下的生成,能夠在D目錄下新增bin、include、lib目錄;對INSTALL分別在Debug和Release模式下進行生成,可在D目錄下獲得install目錄(這個install目錄內容是對INSTALL進行生成時,從以前編譯結果目錄複製過來的,所以和前面的編譯生成相比,所花的時間少得多);
  5. 編譯的結果就是得到install目錄,你能夠將install放於一個特定的目錄,例如E目錄(本人將其放在opencv的源碼目錄,即B目錄)。

工程配置opencv步驟

  1. 向本機系統添加環境變量(path中添加E/install/v64/bin),讓測試工程能夠找到相關的dll;
  2. 在工程中進行屬性配置,在DEBUG和RELEASE模式下分別配置C++目錄的可執行文件目錄(E目錄下的install/x64/v12/bin)、包含文件(E目錄下的install/include、install/include/opencv、 install/include/opencv2)、包含庫文件(E目錄下的install/x64/v12/lib),連接器的附加依賴項(一系列的.lib文件),而後就能夠正常跟進opencv源碼了。

自定義opencv模塊引用

修改了opencv的sources->modules->legacy,想要創建的工程在使用legacy模塊時,使用本身新修改的模塊。測試

  1. 將opencv源碼目錄,即上文提到的B目錄下的sources文件夾,找到modules/legacy,將其替換爲新的legacy;
  2. vs打開opencv編譯工程目錄,即上文提到的D目錄,再次打開「ALL_BUILD.vcxproj」,從新對ALL_BUILD進行Debug和Release模式下的生成,並對INSTALL進行生成;
  3. 將新生成的install目錄替換前述的目錄。

問題及解決

本人使用X64位機器,曾出現LNK1112錯誤:模塊x86與目標機器x64不匹配的錯誤。首先需下載64位camke生成opencvx64平臺下的工程,而後vs需支持64位編譯模塊,編譯並獲得64位下的opencv DLL。其次,在創建工程時需保證項目->連接器->高級->目標計算機選項是"X64";保證工程創建的平臺(可經過系統屬性管理器查看)是x64,若是隻有win32則須要新建x64。源碼

相關文章
相關標籤/搜索