Based on?https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/
############## Version 3.4.0 ##################
1. [前提]
conda environment
python = 3.5
CUDA = 9.0
gcc/g++ = 6.0
2. [conda 環(huán)境設(shè)置]
將下一行添加到 ~/.bashrc涎跨,
```
export PATH=/path-to-your-anaconda/bin:$PATH
```
添加后source該文件
```
source ~/.bashrc
```
生成python 3.5環(huán)境
```
conda create -n py35 python=3.5
```
3. [路徑設(shè)置]
# 在激活py35環(huán)境的同時(shí)激活以下路徑設(shè)置
```
mkdir -p /home/virtual-environments/anaconda2/envs/py35/etc/conda/activate.d
touch /home/virtual-environments/anaconda2/envs/py35/etc/conda/activate.d/activate.sh
nano /home/virtual-environments/anaconda2/envs/py35/etc/conda/activate.d/activate.sh
```
----- 將下面的內(nèi)容寫入activate.sh-----
```
#!/bin/sh
ORIGINAL_LD_LIBRARY=$LD_LIBRARY_PATH
ORIGINAL_PATH=$PATH
ORIGINAL_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
ORIGINAL_PYTHONPATH=$PYTHONPATH
ORIGINAL_CPATH=$CPATH
export LD_LIBRARY_PATH=/home/virtual-environments/anaconda2/lib:/usr/local/cuda$
export PATH=/usr/local/cuda-9.0/bin:$PATH
export PKG_CONFIG_PATH=/home/virtual-environments/anaconda2/lib/pkgconfig:/usr/$
export PYTHONPATH=/home/virtual-environments/anaconda2/envs/py35/bin/python3:$P$
export CPATH=/home/virtual-environments/anaconda2/envs/py35/include:$CPATH
```
---------------我是分割線--------------
# 在解除py35環(huán)境同時(shí)解除路徑設(shè)置
```
chmod +x /home/virtual-environments/anaconda2/envs/py35/etc/conda/activate.d/activate.sh
mkdir -p /home/virtual-environments/anaconda2/envs/py35/etc/conda/deactivate.d
touch /home/virtual-environments/anaconda2/envs/py35/etc/conda/deactivate.d/deactivate.sh
nano /home/virtual-environments/anaconda2/envs/py35/etc/conda/deactivate.d/deactivate.sh
```
----- 將下面的內(nèi)容寫入 deactivate.sh -----
```
#!/bin/sh
export LD_LIBRARY_PATH=$ORIGINAL_LD_LIBRARY_PATH
export PATH=$ORIGINAL_PATH
export PKG_CONFIG_PATH=$ORIGINAL_PKG_CONFIG_PATH
export PYTHONPATH=$ORIGINAL_PYTHONPATH
export CPATH=$ORIGINAL_CPATH
unset ORIGINAL_LD_LIBRARY_PATH
unset ORIGINAL_PATH
unset ORIGINAL_PKG_CONFIG_PATH
unset ORIGINAL_PYTHONPATH
unset ORIGINAL_CPATH
```
--------------- 我是分割線 --------------
# chmod一下deactivate.sh
```
chmod +x /path-to-your-anaconda/envs/py35/etc/conda/deactivate.d/deactivate.sh
```
4. [安裝OpenCV依賴庫(kù)們]
```
source activate py35
conda install -n py35 numpy
conda install -n py35 -c conda-forge libzip
conda install -n py35 -c anaconda cmake
conda install -n py35 -c anaconda libboost
conda install -n py35 -c anaconda boost
conda install -n py35 -c conda-forge harfbuzz
conda install -n py35 -c conda-forge freetype
conda install -n py35 -c anaconda hdf5
conda install -n py35 -c omgarcia gcc-6
conda install -n py35 -c anaconda atlas
conda install -n py35 -c conda-forge doxygen
conda install -n py35 -c anaconda openblas
conda install -n py35 -c conda-forge gtk2
conda install -n py35 -c pkgw-forge gtk3
conda install -n py35 -c nersc libjasper
```
5. [安裝OpenCV]
# cmake里面的路徑記得修改哦
# 這個(gè)版本安裝完后cv2.VideoCapture()有一定概率不好用六敬,因?yàn)閃ITH_V4L被設(shè)置成了OFF碘赖。但是,WITH_V4L設(shè)置成ON會(huì)導(dǎo)致編譯不成功普泡,需要sudo權(quán)限來四處挪一挪呀改一改。所以审编,暫時(shí)拋棄VideoCapture()功能。:( 有大神解決了這個(gè)問題的話請(qǐng)一定要告訴我垒酬!感謝砰嘁!?
```
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/path-to-where-you-extract-opencv/opencv-3.4.0 -D INSTALL_PYTHON_EXAMPLES=OFF -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=/path-to-where-you-extract-opencv/opencv_contrib-3.4.0/modules -D PYTHON3_EXECUTABLE=/path-to-your-anaconda/envs/py35/bin/python3.5m -D PYTHON3_LIBRARY=/path-to-your-anaconda/envs/py35/lib/libpython3.5m.so?-D PYTHON3_INCLUDE_DIR=/path-to-your-anaconda/envs/py35/include/python3.5m -D PYTHON3_NUMPY_INCLUDE_DIRS=/path-to-your-anaconda/envs/py35/lib/python3.5/site-packages/numpy/core/include -D PYTHON3_PACKAGES_PATH=/path-to-your-anaconda/envs/py35/lib/python3.5/site-packages -D WITH_V4L=OFF -D WITH_LIBV4L=ON -D BUILD_EXAMPLES=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D CUDA_NVCC_FLAGS=--expt-relaxed-constexpr ..
make -j32
make install
```
6. [完成OpenCV 安裝]
```
locate?cv2.cpython-35m-x86_64-linux-gnu.so
```
# 上述.so文件應(yīng)該在 xxx/python3.5/site-packages/
# 當(dāng)找到多個(gè)地址時(shí),每個(gè)文件夾都要修改
```
cd /path/to/cv2.cpython-35m-x86_64-linux-gnu.so?
mv?cv2.cpython-35m-x86_64-linux-gun.so?cv2.so
```
7.?[使用OpenCV]
```
source activate py35
```
# 然后在py35環(huán)境下自由的玩耍OpenCV吧 ~
8. [Trouble Shooting]
來這里看cmake的錯(cuò)誤報(bào)告: /path-to-where-you-extract-opencv/opencv-3.4.0/build/CMakeFiles/CMakeError.log
8.1. /usr/bin/ld: cannot find –lxxxxx
https://stackoverflow.com/questions/16710047/usr-bin-ld-cannot-find-lnameofthelibrary
# 先看一下缺少的庫(kù)是怎么個(gè)調(diào)取方法
```
ld -lxxxxx --verbose
```
解決方案? ?:? a. 將調(diào)取方法里面某一個(gè)順眼的路徑加到 LD_LIBRARY_PATH中 (前提是該庫(kù)文件在這個(gè)順眼的路徑下面)
? ? ? ? ? ? ? ? ? ? ?b. If you are root, then change the name or add a symbolink
```
????????????????????????sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
```
8.2. -++++++-FOR OPENCV-3.1.0-ONLY-++++++-
BUG: ffmpeg/avformat.h not found:
解決方案:?
```
mkdir /usr/include/ffmpeg
cd /usr/include/ffmpeg
sudo ln -sf /usr/include/x86_64-linux-gnu/libavcodec/*.h ./
sudo ln -sf /usr/include/x86_64-linux-gnu/libavformat/*.h ./
sudo ln -sf /usr/include/x86_64-linux-gnu/libswscale/*.h ./
sudo ln -s /usr/include/ffmpeg/*.h /usr/include/x86_64-linux-gnu/ffmpeg
```