ubuntu 安装编译opencv+ffmpeg,附:pip install path问题


用ubuntu做视频处理,发现无法读取视频,google了下,是因为ffmpeg没装好。所以,重装opencv+ffmpeg。

我的环境
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安装 以及错误处理

如果继续坚持用anaconda

推荐链接: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=<<Directory>>/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

Compiling OpenCV with CUDA and FFMpeg on Ubuntu 16.04

因为种种问题,还是不能读取视频,于是又找了个连接:
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,比较保险)

Install OpenCV 3.4 and Python 3.5+ on Ubuntu

最后!用了这个连接中的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卸载过程:

  1. 删除整个anaconda目录:

    由于Anaconda的安装文件都包含在一个目录中,所以直接将该目录删除即可。到包含整个anaconda目录的文件夹下,删除整个Anaconda目录:
    rm -rf anaconda文件夹名

  2. 建议清理下.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

在这里插入图片描述

附:pip install path问题

安装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 numpypip show numpy
Location: /usr/local/lib/python3.5/dist-packages

卸载已安装的opencv

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值