【OpenCV入門教程之二】OPENCV3 開源之美 — 編譯源代碼、配置opencv_contrib


為什么要配置opencv_contrib?

opencv3.0版本 功能更加模塊塊,一些功能模塊不夠完善,等足夠完善在merge到主分支中,而我們圖像識別中要用到的SIFT等算法被封裝在xfeacture模塊並且不在主分支,所以要用的時候需要編譯它 
[ opencv_contrib-github地址 ]

工具准備

  1. VS2013 (VS系列,我這邊用的是2013版本)
  2. cmake 
    想要在Windows平台下生成OpenCV的解決方案,我們需要一個名為cmake的開源軟件,可以在camke的官網:http://www.cmake.org/上下載到 
    • 首先轉到其下載頁面。下載頁面的Source distributions處可以下載到cmake軟件的源碼,如果對這款開源軟件感興趣,不妨看看
    • 而Binary distributions處可以下載到cmake的執行文件,我們只需要下載到其執行文件即可,選擇Windows (Win32 Installer)進行下載,點擊這里直接下載:http://www.cmake.org/files/v3.4/cmake-3.4-win32-x86.exe, 安裝教程挺簡單的,略(上面步驟實在不會,可參考:ORZ淺墨大神)

使用cmake生成OpenCV源代碼工程的解決方案

在上面的github README.md里面有提供詳細的教程

有兩種方案選擇:

  • You can build OpenCV, so it will include the modules from this repository. Here is the CMake command for you:
$ cd <opencv_build_directory> $ cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory> $ make -j5

As the result, OpenCV will be built in the with all modules from opencv_contrib repository. If you don’t want all of the modules, use CMake’s BUILD_opencv_* options. Like in this example:

$ cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules -DBUILD_opencv_legacy=OFF <opencv_source_directory>

 

用命令行簡單粗暴,不過我在使用的時候出現錯誤,說缺少某些庫文件,google了一番說還要要控制其他參數,為了弄個萬能教程,我們采用下面的方法
  • cmake-gui 
    If you prefer using the gui version of cmake (cmake-gui), then, you can add opencv_contrib modules within opencv core by doing the following: 
    1. 啟動cmake-gui
    2. 選擇opencv source code 文件夾 和 where binaries will be built個人的存放如圖所示,注意build里面的內容是之后要進行opencv配置的 如圖
    3. 按configure按鈕進行進行第一次configure,第一次時間有點長,成功之后如上圖所示
    4. 在search那里搜索OPENCV_EXTRA_MODULES_PATH 並在value那欄選擇文件夾的方式(browse button)找到opencv_contrib的存放地址(/modules) 
      這里寫圖片描述
    5. 再次按下configure button,之后在按generate button
    6. 看到Generating done字樣,沒有報錯,大功告成

可以去之前我們指定的D:\opencv3\opencv\build下找尋我們生成的解決方案了。

INSTALL

用cmake工具生成解決方案之后,還要做的一步就是install,如果是用命令行的方式,只需要 cmake install 
或者將解決方案sln導入VS 
1. 打開OpenCV的解決方案,右擊CMakeTargets下的INSTALL,選擇“生成”,生成Debug版的dll和lib 
2. 如果需要Release的話,修改配置為“Release”,重復步驟1,生成Release版的dll和lib 
3. 生成完畢,在OpenCV解決方案下的install文件夾里就有了dll,lib和h頭文件了。這里寫圖片描述 
4. 雖然生成了庫文件了,如果可以Debug跟蹤源碼,還得保留OpenCV解決方案

重新配置環境

注意的一點是,我一開始用的是官網opencv3.0的包,在 
上篇blog[http://www.cnblogs.com/france/p/4853706.html] 已經講解了如何配置開發環境了,或者參考http://blog.csdn.net/poem_qianmo/article/details/19809337 
那么這里要注意的是

  • Path重新配置,然后記得重啟
  • VS property pages 中 
    VC++ Directories 的include Directories(.hpp存放地) 改成如下(就是換了地址)
D:\opencv3\opencv\build\install\include\opencv2; D:\opencv3\opencv\build\install\include\opencv; D:\opencv3\opencv\build\install\include;

Library Directories(lib存放地) 更改地址 
D:\opencv3\opencv\build\install\x86\vc12\lib

  • Linker Input中修改為如下:
opencv_imgproc300d.lib; opencv_imgcodecs300d.lib; opencv_highgui300d.lib; opencv_features2d300d.lib; opencv_core300d.lib; kernel32.lib;user32.lib; opencv_xfeatures2d300d.lib; opencv_ts300d.lib; gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

 

具體的lib文件名,可在D:\opencv3\opencv\build\install\x86\vc12\lib 中找到,不一樣要全部都加進去(當然都加進去最好,我這里只加了一些我比較會用到的lib),300表示3.00版本,+d表示debug否則為release版本, 
而在原來我們官網下的opencv3.0基本版只要加opencv_ts300d.lib;opencv_world300d.lib;但是我們自己編譯完發現opencv_world300d.lib;已經舍棄了,換成各種各樣詳細的包了,和2.x的加的lib個數差不多,因為是完整版本了。

PS:如果在寫代碼和編譯的時候沒有提示錯誤,說明hpp文件和lib引用是存在的,但是在鏈接和運行的時候報錯說沒有找到相應的方法,就是沒有配置上面具體lib,動態鏈接的時候出錯

PS2:CSDN的markdown炒雞好用,博客園要加油了

參考: 
http://www.nmtree.net/2014/03/19/windows_build-opencv-with-cmake-and-vs2013.html 
http://blog.csdn.net/poem_qianmo/article/details/21974023 
http://blog.csdn.net/poem_qianmo/article/details/19809337


免責聲明!

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



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