我的环境
ubuntu16.04
anaconda3
python3.5
打算装最新的opencv3.4.6
附上opencv各版本下载连接:https://opencv.org/releases/
安装历程十分坎坷,一入anaconda深似海啊,anaconda和系统自带python之间的冲突在编译opencv的时候全部显现出来。
另外,如果有视频处理需求,要提前装好ffmpeg,省得二次编译opencv,参考我的两篇博文:
安装ffmpeg、opencv的依赖包、用anaconda+opencv make过程中出现错误
ubuntu下opencv+ffmpeg安装 以及错误处理
推荐链接:https://www.cerebrumedge.com/single-post/2017/12/26/Compiling-OpenCV-with-CUDA-and-FFMpeg-on-Ubuntu-1604
按照这个链接编译,基本可以成功。
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=<>/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON \
-D BUILD_opencv_python2=OFF \
-D WITH_FFMPEG=1 \
-D WITH_CUDA=ON \
-D CUDA_GENERATION=Pascal \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D PYTHON_DEFAULT_EXECUTABLE=/opt/anaconda/bin/python \
-D PYTHON3_INCLUDE_DIR=/opt/anaconda/include/python3.5m \
-D PYTHON3_LIBRARY=/opt/anaconda/lib/libpython3.5m.so \
-D PYTHON3_PACKAGES_PATH=/opt/anaconda/lib/python3.5 \
-D WITH_LAPACK=OFF \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/opt/anaconda/lib/python3.5/site-packages/numpy/core/include ..
然后
sudo make -j $(($(nproc) + 1)) install
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
因为种种问题,还是不能读取视频,于是又找了个连接:
http://notes.maxwi.com/2017/04/01/ubuntu-compile-opencv3-with-cuda-and-ffmpeg/
我实在搞不定python和anaconda多版本共存问题,所以直接就把anaconda给卸了。。。然后清爽很多。
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D OPENCV_TEST_DATA_PATH=../../opencv_extra \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUFFT=ON \
-D WITH_NVCUVID=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_OPENGL=ON \
-D WITH_FFMPEG=ON \
-D INSTALL_C_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_SHARED_LIBS=OFF \
..
由于这个链接中,需要:
cmake -D OPENCV_TEST_DATA_PATH=../../opencv_extra \
估计是opencv_extra的加入耗费了大量内存,直接导致:
segmentation fault (core dumped)
build文件巨大,奈何我系统盘太小,只能删了build重新编译(删之前做一下 sudo make uninstall,比较保险)
最后!用了这个连接中的cmake选项,成功了!
https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/
基础版:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D OPENCV_ENABLE_NONFREE\
-D BUILD_EXAMPLES=ON ..
加cuda版
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_ENABLE_NONFREE\
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUFFT=ON \
-D WITH_NVCUVID=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_OPENGL=ON \
-D BUILD_EXAMPLES=ON ..
OPENCV_ENABLE_NONFREE 用surf,需要版权确认,要勾这个选项
一样的:
sudo make -j $(($(nproc) + 1)) install
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
如果make的过程中出现异常中断,没有明确的错误,可以考虑将原本的make -j4
之类的 改成make
,取消并行编译,一般都会成功的。另外,编译opencv有时会比较卡,所以编译前最好保存好所有文档,并关闭一些大的工程,避免返工。
/home/username/opencv_contrib/modules/rgbd/src/odometry.cpp:41:45: fatal error: unsupported/Eigen/MatrixFunctions: No such file or directory
compilation terminated.
参考 https://github.com/opencv/opencv/issues/8402
Just read the error message, it says header file unsupported/Eigen/MatrixFunctions not Found!
so with eigen3 we downloaded, (use apt-get, default location is usr/include/eigen3/) there are two folders in eigen3/, 1. Eigen, 2. unsupported. (my Eigen is 3.2.92).
Solution: copy both of these folders to /usr/include. (I assume you have already put Eigen in /usr/include, that’s what tutorial usually says. leaving unsupported in usr/include/eigen3 folder is like hiding it, system can not find it.)
翻译一下:eigen3/文件夹下有两个文件:1. Eigen, 2. unsupported. 一般eigen安装的时候都会让你把Eigen这个文件夹拷贝到/usr/include下,而unsupported不做处理,这样系统就找不到它,所以解决办法是:
sudo cp -rf /usr/include/eigen3/unsupported /usr/include
删除整个anaconda目录:
由于Anaconda的安装文件都包含在一个目录中,所以直接将该目录删除即可。到包含整个anaconda目录的文件夹下,删除整个Anaconda目录:
rm -rf anaconda文件夹名
建议清理下.bashrc中的Anaconda路径:
a. 到根目录下,打开终端并输入:
sudo gedit ~/.bashrc
b. 在.bashrc文件末尾用#号注释掉之前添加的路径(或直接删除):
#export PATH=/home/lq/anaconda3/bin:$PATH
保存并关闭文件
c. 使其立即生效,在终端执行:
source ~/.bashrc
d. 关闭终端,然后再重启一个新的终端,这一步很重要,不然在原终端上还是绑定有anaconda.
anaconda 卸载之后,原本默认anaconda下的python会改变指向,可以使用下方的命令随时在列出的 Python 替代版本中任意切换
update-alternatives --config python
安装opencv过程中有提示numpy没装,然而我pip install numpy
,又提示我已经装好了。
问题:pip安装路径放在~/.local/lib/python3.5/site-packages
搜了一圈怎么改变pip install path,只找到了暂时改变路径的办法:
sudo -H pip install --target=directory package_name
另:查看numpy安装位置可以用:
pip show numpy
还有个办法是修改 /usr.lib/python3.5/site.py 下的 USER_SITE 和 USER_BASE 但是我改了也没用。
无奈,只好卸了pip重装。
参考:https://blog.csdn.net/jasonzzj/article/details/53341271
sudo apt-get remove python-pip
到 https://pypi.python.org/pypi/pip 这个网站下载对应版本的源码,推荐为这种压缩格式的:pip-9.0.1.tar.gz,然后到下载目录下,解压并进入文件:
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
python setup.py install
重装大法好啊!!!!!
重装之后,再pip install numpy
,pip show numpy
:
Location: /usr/local/lib/python3.5/dist-packages
1、查看已安装的opencv版本
pkg-config --modversion opencv
2、卸载
首先要找到当初安装opencv的build目录,进入该build目录执行卸载操作
sudo make uninstall
cd …
rm -r build
如果找不见该build目录,可以重新建立build目录安装对应版本,然后再执行上边卸载步骤。然后清理/usr中所有opencv相关项
rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
cd /usr
find . -name “opencv” | xargs sudo rm -rf
移除python相关
apt-get remove-doc opencv-data python-opencv