无sudo权限安装OpenCV from source

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 环境设置]

将下一行添加到 ~/.bashrc,

```

export PATH=/path-to-your-anaconda/bin:$PATH

```

添加后source该文件

```

source ~/.bashrc

```

生成python 3.5环境

```

conda create -n py35 python=3.5

```

3. [路径设置]

# 在激活py35环境的同时激活以下路径设置

```

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

```

----- 将下面的内容写入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环境同时解除路径设置

```

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

```

----- 将下面的内容写入 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依赖库们]

```

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里面的路径记得修改哦

# 这个版本安装完后cv2.VideoCapture()有一定概率不好用,因为WITH_V4L被设置成了OFF。但是,WITH_V4L设置成ON会导致编译不成功,需要sudo权限来四处挪一挪呀改一改。所以,暂时抛弃VideoCapture()功能。:( 有大神解决了这个问题的话请一定要告诉我!感谢! 

```

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文件应该在 xxx/python3.5/site-packages/

# 当找到多个地址时,每个文件夹都要修改

```

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环境下自由的玩耍OpenCV吧 ~

8. [Trouble Shooting]

来这里看cmake的错误报告: /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

# 先看一下缺少的库是怎么个调取方法

```

ld -lxxxxx --verbose

```

解决方案   :  a. 将调取方法里面某一个顺眼的路径加到 LD_LIBRARY_PATH中 (前提是该库文件在这个顺眼的路径下面)

                     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

```

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容