昨天我們使用了dlib和opencv進行了人臉檢測標注(http://www.cnblogs.com/take-fetter/p/8310298.html)
但是運行環境是基於windows的而且可能因為我的電腦上的visual studio配置比較完備,安裝運行沒有出現任何問題.
因為之后我打算把做的程序在樹莓派上運行,所以先打算把昨天做的程序移到linux上試試,坑遇到了很多總結一下吧,opencv安裝倒是沒遇到什么坑
環境:deep linux 15.5 , anaconda3 , pycharm 2017.3
更新:就在2018.1.22的dlib更新(ver 19.9)中取消了對boost.python的依賴,所以安裝新版本應該不會遇到需要下載文件放入目錄的問題了!!!
dlib的安裝首先需要安裝cmake和boost
- cmake的安裝
https://cmake.org/download/
下載安裝包 ,解壓進入目錄后依次運行
./bootstrap
make
make install
- boost的安裝
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 dlib File "/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
更新系統的動態鏈接庫
- dlib安裝使用
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)