內容轉載自個人博客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
,此命令會刪除安裝時添加的全部文件,可是不處理文件夾