Linux下自带 python2 和 python3,按道理来说是 安装pip 和 pip3 之后是可以直接安装 opencv的, 但是在使用时会遇到错误,cv2.imshow()函数出错,如下:
此时自己内心的os是非常难过的,就去网上查找答案,最终得出自己的结论是,利用pip安装得到的是别人已经配置好了环境的opencv,别人的电脑系统和一些配置与自己的是不一样的,所以就会出错。得出了如下可行的安装方案:
申明:源码安装的话可以在python2 和 python3 中同时安装opencv,这点是非常好的,并且在pytorch这样的包也推荐
使用源码安装
在安装之前进行更新
sudo apt update
sudo apt upgrade
sudo apt-get update
sudo apt-get upgrade
1、安装源码安装需要的编译环境 gcc cmake
sudo apt-get install build-essential pkg-config cmake cmake-gui
2、安装python的管理包pip
sudo apt-get install python-pip
sudo apt-get install python3-pip
3、安装python的数据分析包
pip install numpy scipy matplotlib scikit-image scikit-learn
pip3 install numpy scipy matplotlib scikit-image scikit-learn
时间较长,如果觉得慢的话可以安装镜像(清华)
mkdir ~/.pip
vim ~/.pip/pip.conf
# 在pip.conf 中添加以下内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
4、安装opencv的依赖包
sudo apt-get install checkinstall yasm gfortran git ffmpeg
sudo apt-get install libxvidcore4 libgtk-3-dev
sudo apt-get install libjpeg8-dev libjasper-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
sudo apt-get install libxine2-dev libv4l-dev
sudo apt-get install libqt4-dev libgtk2.0-dev libtbb-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install libvorbis-dev libxvidcore-dev
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get install x264 v4l-utils
还有一些可选择的依赖包,也建议安装
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
5、从官网上下载 opencv 源码安装包
https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.4.0/opencv-3.4.0.zip/download?use_mirror=jaist
或者点这里下载最新的opencv版本
下载完成之后进入到解压的opencv3.4中,创建自己的built目录,用于安装配置环境
cd ~
cd opencv3.4.0
mkdir build
cd build
6、接下来是对opencv环境进行自己电脑的一个配置
在进入的build目录中进行如下的几个操作:
(1)cmake
cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DsCMAKE_INSTALL_PREFIX=/usr/local 这是最好的配置方法(我觉得)
其中也可以制定一些定制的环境等等,但是对于开始自己安装的话还是不要进行自己设置,后面自己熟悉了可以设置,类似于下面这样:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
主要的目的是对自己的系统配置,设置的不好的话会报出cmake不成功的提示,如 WITH_QT=ON 主要是把opencv与 QT关联好,但是如果你的系统
上没有的话就不设置on 所以强烈建议按照上一种安装
此安装过程会有点久,中间可能会安装一个东西时间较长,安装之后就较快了,最终安装好了会如下显示
(2) sudo make -j2
j2 代表的是电脑的核心数,可以利用 nproc 指令在命令行查看 。此过程也会时间较长,等待一会就好
(3)sudo install make 对刚刚下载的make进行安装
(4)配置opencv在自己系统中的环境
用用gedit打开/etc/ld.so.conf
sudo gedit /etc/ld.so.conf,在打开的空文件加上一行
/usr/local/lib 这是makfile文件的安装路径
再运行sudo ldconfig
修改bash.bashrc文件,sudo gedit /etc/bash.bashrc
在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
到这里整个安装就完成了
然后进行测试,发现能够成功,且能够显示 cv2.imshow()
特别重要的问题:目前没找到opencv能够源码编译在anaconda上的方法,但是可以把编译在系统Py2或者Py3上的opencv直接复制到anaconda中
对于py2:
复制/usr/local/lib/python2.7/dist-packages/cv2.so文件到/home/chenbo/anaconda2/lib/python2.7/site-packages/中
对于py3:
复制/usr/local/lib/python3.6/site-packages/cv2.cpython-36m-x86_64-linux-gnu.so文件到/home/chenbo/anaconda3/lib/python3.6/site-packages/中去
对于编译之后opencv的链接文件有所不同,但是使用此种方法在anaconda中都能够导opencv, 使用import cv2 均不会报错
最后可能的问题
但是安装完成之后再次开启系统时,会出现不能正常的启动,出现如下的字眼
The system is running in low-graphics mode
此时可以通过一个简单且有效的方式进行解决
ctrl +alt +f2 强制进入命令行模式,然后进行
sudo apt update
sudo apt upgrade
sudo apt-get update
sudo apt-get upgrade
在开篇进行安装之前也进行了这样的操作就是为了防止这样的错误,在许多软件的安装中都有这样类似的更新,不知道这样的做能否
解决问题,在我的电脑上是可以解决的。该种安装的方式在Ubuntu 18.04上安装没有出现上诉的问题。
在自己解决的过程中参考的博客:
https://blog.csdn.net/gpwner/article/details/79179259
https://www.linuxidc.com/Linux/2017-10/147316.htm
https://blog.csdn.net/CSDNNETVIP/article/details/77951990