内容转载自个人博客python
若是你只是想要使用C++或者Python语言来调用OpenCV,并且并不关心OpenCV是否为最新版本,那么请直接按照以下代码:
sudo apt update && sudo apt install libopencv-dev python3-opencv
前者libopencv-dev
是用于C++开发的库(已经很老旧了)
后者python3-opencv
是用于python3开发的库,你能够在终端输入
/usr/bin/python3 -c "import cv2;print(cv2.__version__)"
来验证python3-opencv
是否安装成功
/usr/bin/pip3 install opencv-contrib-python==3.4.2.17
来安装扩展功能(3.4.2版本之后的预编译库中都不会再加入non-free模块)linux
在官方网站下载最新源代码(截止本文测试时,最新版本为4.4.0),若是须要使用SIFT
算法等扩展功能,下载opencv_contrib
一块儿编译:git
例如,opencv 4.4源码解压到当前目录下,opencv_contrib 4.4也解压到当前目录下github
按照以下步骤:web
# 安装系统依赖 sudo apt install build-essential cmake git libgtk2.0-dev \ pkg-config libavcodec-dev libavformat-dev libswscale-dev \ libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev \ libjasper-dev libdc1394-22-dev # 添加源以继续安装依赖libjasper sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" # 安装系统依赖 sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev \ libjasper-dev libdc1394-22-dev libsnappy-dev libboost-all-dev \ python3-dev python3-numpy ffmpeg cmake-qt-gui libopenblas-dev \ tesseract-ocr libtesseract-dev libprotobuf-dev libleveldb-dev \ libhdf5-serial-dev protobuf-compiler libatlas-base-dev \ libgflags-dev libgoogle-glog-dev liblmdb-dev libfaac-dev \ gfortran libgstreamer1.0-dev libatlas-base-dev libxvidcore-dev \ libpng-dev libopenexr-dev libtiff-dev libwebp-dev \ libmp3lame-dev libtheora-dev libvorbis-dev \ libopencore-amrwb-dev x264 v4l-utils libgdk-pixbuf2.0-dev \ manpages-dev libopencore-amrnb-dev libgstreamer-plugins-base1.0-dev \ libqt5widgets5 libqt5gui5 libqt5dbus5 libqt5network5 libqt5core5a \ qtcreator qt5-default # 修复可能安装出错的依赖 sudo apt install -f
按照如下步骤:算法
# 在opencv4.4源码解压后的文件夹下面,建立编译文件夹 mkdir build && cd build # 配置编译选项 # CMAKE_INSTALL_PREFIX 是最终OpenCV的安装位置 # OPENCV_ENABLE_NONFREE 指示是否开启Non-free的算法 # OPENCV_EXTRA_MODULES_PATH 指示扩展算法的源码文件夹 # WITH_CUDA 该选项须要确保本身已安装显卡驱动和cuda # 能够关注下命令的输出,能够从中找到哪些模块没有配置成功 cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.4 \ -D OPENCV_ENABLE_NONFREE=ON \ -D OPENCV_EXTRA_MODULES_PATH=/home/zfb/opencv_contrib-4.4.0/modules \ -D OPENCV_GENERATE_PKGCONFIG=YES \ -D WITH_QT=ON \ -D WITH_OPENGL=ON \ -D WITH_CUDA=ON \ -D BUILD_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=ON .. # 开启12个线程同时编译源码 make -j12 # 安装OpenCV到指定位置 sudo make install
按照如下步骤:ubuntu
# 查看该文件是否存在(OPENCV_GENERATE_PKGCONFIG=YES参数保证此文件存在) cat /usr/local/opencv4/lib/pkgconfig/opencv4.pc # 把上面的文件添加到PKG_CONFIG_PATH sudo vim /etc/profile.d/pkgconfig.sh # 文件内容以下 # export PKG_CONFIG_PATH=/usr/local/opencv4/lib/pkgconfig:$PKG_CONFIG_PATH # 激活文件 source /etc/profile # 验证配置,若是不报错则说明正常 pkg-config --libs opencv4
按照如下步骤:vim
# 将OpenCV的库添加到路径 sudo vim /etc/ld.so.conf.d/opencv4.conf # 添加内容以下(也多是空文件) # /usr/local/opencv4.4/lib # 更新配置 sudo ldconfig
按照如下步骤:bash
# 进入下载的opencv4.4的源码文件夹下的samples目录 cd samples/cpp/example_cmake # 配置编译选项 cmake . # 开始编译文件 make # 执行测试代码,弹出窗口实时显示摄像头画面 ./opencv_example
首先须要找到编译好的用于python3的动态库文件的位置,可使用以下代码搜索(其实在sudo make install
时也会显示):
sudo find / -iname "cv2*.so"
获得路径为/usr/local/opencv4.4/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-x86_64-linux-gnu.so
而后把它复制到对应python解释器的/path/to/dist-packages
(系统自带的python解释器)和/path/to/site-packages
(用户安装的python解释器)目录下,以后就能在该python解释器中使用python-opencv库:app
# 查看系统Python环境的包路径 /usr/bin/python3 -c "import pip;print(pip)" # 建立软连接使得/usr/bin/python3可使用opencv sudo ln -s /usr/local/opencv4.4/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/cv2.so # 测试安装结果 /usr/bin/python3 -c "import cv2;print(cv2.__version__)"
cd build
sudo make uninstall
,此命令会删除安装时添加的全部文件,可是不处理文件夹