參考:html
https://www.cnblogs.com/hxzkh/p/8473190.htmllinux
將該博主的某一部分摘錄出來bash
->lsdslam 中的opencv版本ui
三、編譯 opencv
因爲這個代碼用到了opencv2.4 版本,因此咱們要下載對版本。以前一直編譯不一樣,覺得是下載的版本有問題,我下載了 2.4.九、2.4.1三、2.4.13.5,最後用 2.4.13版本跑通了,固然我不是說 2.4.九、2.4.13.5 等其餘 2.4 版本不能跑通。爲何這麼說呢?由於我以前之因此出問題編譯出錯是由於我以前裝了 3.1.0的版本,因此不行。因此,你能夠試一試,我以爲只要是 2.4. 的版本應該均可以。spa
這裏我簡單交代一下我曲折的編譯之路。。。而後再給出正確方法。htm
首先說一下 opencv 版本的問題,以前跑另外一個程序須要opencv3,,那時候沒玩過這,也不懂,就按默認路徑安裝了 opencv3.1.0,而後它本身就裝到了 usr/local/include、usr/local/lib,還有share什麼的,好多個文件夾,致使我卸載都很麻煩,要卸載它,你就得手動刪掉它全部安裝的路徑下的相關文件,這些安裝信息在安裝時保存在了一個什麼 install 文件中,具體我忘了(反正我是運行 unintall 不行,因此才手動一個一個刪的)。blog
就這樣,刪掉了opencv3.1.0版本,結果仍是編譯出錯,說是找不到一些opencv裏的程序,實際上是程序找不到opencv在哪裏(由於我沒有安裝到默認路徑,這個一會再說)。試了不少方法,最後發現,不光要設置環境變量,還要設置 CMakeLists 文件告訴程序 opencv 的路徑。文檔
那我爲何要改變安裝路徑,而不是按默認安裝到 usr 呢?固然是爲了方便管理。如同你在 Windows 中安裝軟件,誰會默認安裝到 C 盤啊?是吧,都是安裝到別的盤,這樣方便管理,還不會影響系統,重裝時也不會丟失。linux下也是同樣,改變了安裝路徑,就能夠同時安裝多個版本的 opencv,以應對不一樣程序的需求。切換opencv版本有不少文檔,百度一下就行。切換時只須要改變環境變量和 CMakeLists 文件中的設置就行。我下面安裝 opencv 的方法就是這種。get
好了,言歸正傳,首先到官網下載 opencv2.4.13源碼
將下載好的壓縮包解壓到你方便的位置,這裏我是專門建了一個用來放 opencv 源碼的文件夾(我把opencv2.4.九、2.4.1三、3.1.0版本源碼都放在這裏了):
cd ~/
mkdir opencv_src
而後創建一個用於安裝 opencv 的文件夾,這個也是本身看着辦,我一樣是在 Home 下,而後每一個opencv版本各佔一個文件夾:
cd ~/
mkdir opencv-2.4.13
因此最後個人格局是這樣的:
而後進入解壓後的 opencv-2.4.13,創建 build 文件夾並進入
mkdir build
cd build
執行:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=~/opencv-2.4.13 ..
注意不要丟掉最後的兩個點!它狠重要!!
而後執行:
make
sudo make install
若是虛擬機配了雙核,爲了加快速度能夠 make -j2 和 sudo make install -j2
安裝後會發如今安裝文件夾 opencv-2.4.13 中的 lib、bin等文件上面有小鎖子標誌,若是要消除這個小鎖子,須要更改權限:
cd ~/
sudo chmod 777 opencv-2.4.13 -R
就能夠了
而後配置 opencv 變量,編輯文件 /etc/ld.so.conf.d/opencv.conf(若是沒有就會自動建立):
sudo gedit /etc/ld.so.conf.d/opencv.conf
而後添加 opencv2.4.13 的 lib 路徑:
~/opencv-2.4.13/lib
保存退出,執行:
sudo ldconfig
編輯 ~/.bashrc ,最後添加:
#opencv-2.4.13
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:~/opencv-2.4.13/lib/pkgconfig
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:~/opencv-2.4.13/lib
保存退出,執行:
source ~/.bashrc
查看當前 opencv 版本,新開窗口執行:
pkg-config --modversion opencv
若是顯示 2.4.13,說明當前opencv版本正是剛安裝的 2.4.13