python學習日記--Linux下dlib安裝(主要是cmake和boost的安裝),dlibcmake
昨天我們使用了dlib和opencv進行了臉部偵測標註(http://www.cnblogs.com/take-fetter/p/8310298.html)
但是運行環境是基於windows的而且可能因為我的電腦上的visual studio配置比較完備,安裝運行沒有出現任何問題.
因為之後我打算把做的程式在樹莓派上運行,所以先打算把昨天做的程式移到linux上試試,坑遇到了很多總結一下吧,opencv安裝倒是沒遇到什麼坑
環境:deep linux 15.5 , anaconda3 , pycharm 2017.3
dlib的安裝首先需要安裝cmake和boost
https://cmake.org/download/
下載安裝包 ,解壓進入目錄後依次運行
./bootstrapmakemake install
http://www.boost.org/下載安裝包
解壓進入目錄後輸入
sudo apt install python3-dev build-essential./bootstrap.sh --with-libraries=all --with-toolset=gcc --with-python=python3.6
因為預設是Python2,如果安裝完成之後運行之前程式出現以下問題就證明是錯了
但是這個with python參數會出現問題,編譯後不會編譯出所需的檔案https://www.jianshu.com/p/b9da6256aafe 這篇文章中--with-python是==python3.5 不知道能不能行得通,我這裡3.6是沒有成功的
翻了一下包裡的文檔也沒有看見具體的使用方法,我的解決方案在文章最後
Traceback (most recent call last):File "/media/takefetter/demo/dlib/facial-landmarks/my_facial_landmarks.py", line 5, in <module>import dlibFile "/home/takefetter/anaconda3/envs/tensorflow/lib/python3.6/site-packages/dlib/__init__.py", line 1, in <module>from .dlib import *ImportError: /usr/local/lib/libboost_python.so.1.66.0: undefined symbol: PyString_Type
之後輸入
./b2 toolset=gcc
接下來就是靜靜的等待了,編譯大約需要十分鐘左右,當顯示
...failed updating 66 targets......skipped 12 targets......updated 1251 targets...
並再次回到命令列時可以運行
./b2 install --prefix=/usr
將其安裝到/usr目錄下,其中使用到了--prefix=/usr用來指定boost的安裝目錄,不加此參數的話預設的標頭檔在/usr/local/include/boost目錄下,庫檔案在/usr/local/lib/目錄下。這裡把安裝目錄指定為--prefix=/usr則boost會直接安裝到系統標頭檔目錄和庫檔案目錄下,可以省略配置環境變數。
順便提下關於boost庫的刪除:刪除/usr/include中的boost檔案和/usr/lib中關於boost的所有檔案就可以了
最後使用
ldconfig
更新系統的動態連結程式庫
pip install dlib
(anaconda 記得使用source activate 環境名 進入具體的python環境)
接上文的解決方案:
後面運行時會提示libboost_python.so.1.66.0: cannot open shared object file: No such file or directory
我編譯了好幾次也沒有能產生這個檔案,只能是在網上down了一個:(
https://files.cnblogs.com/files/take-fetter/libboost_python.so.1.66.0.zip 下載後放入usr/lib中
索性運行正常,觀海還是昨天的觀海(誤......
也不知道以後會出什麼問題,還是菜啊╮(╯▽╰)╭(以後工作了一定要換mac)