樹莓派3b+ python3.5+opencv3.4.1下載安裝及配置詳解
經過痛苦歷程后總算安裝和配置好了 opencv3
記錄一下 可行的樹莓派 3B+ python3.5+opencv3.4.1下載安裝及配置
1 擴大TF的空間
擴大TF卡的空間,如果不做這步操作,后面會出問題,比如卡死。輸入(命令行)
sudo raspi-config
然后選擇" Advanced Options "然后選擇" Expand Filesystem "然后重啟樹莓派
2 OpenCV-3.4.1和OpenCV_Contrib-3.4.1源文件下載
這里大家可以去官網下載,直接分享下載鏈接:
https://github.com/opencv/opencv/archive/3.4.1.zip
https://github.com/opencv/opencv_contrib/archive/3.4.1.zip
下載后在 /home/pi/Downloads下創建opencv文件夾解壓 如圖:
3 開啟虛擬環境venv(在樹莓派上開啟虛擬可以解決一些版本不兼容的問題)
3.1 安裝 virtualenv
sudo apt-get install virtualenv -y
3.2 創建虛擬環境(以python3.5為例,路徑自定義)
virtualenv -p /home/pi/venv/bin/python3.5 venv
3.3 開啟虛擬環境
source /home/pi/venv/bin/activate
開啟后會帶 venv 的標識
4 在虛擬環境下安裝numpy
sudo pip3 install numpy
安裝后退出虛擬環境
deactivate
5 安裝需要依賴的庫
開始為OpenCV安裝做准備,配置所需的庫(一次一行)
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python2.7-dev python3-dev
6 opencv的編譯
6.1 編譯要用到CMake,這里我們使用圖形界面,安裝cmake-qt-gui:
sudo apt-get install cmake-qt-gui
6.2 首先進到opencv-3.4.1的目錄下,新建build文件夾,然后在終端激活python虛擬環境的條件下,打開CMake:
source /home/pi/venv/bin/activate
cd /Downloads/opencv/opencv-3.4.1
mkdir build
cmake-gui
6.3 選擇源文件路徑,編譯文件夾選擇剛才新建的build文件夾,
點擊左下角Configure,第一次完成是紅色的,再點一l兩次就變成白色了,如圖:
6.4 然后我們查找OPENCV_EXTRA_MODULES_PATH項,將OpenCV_Contrib-3.4.1的路徑填進去,
點擊Configure,如圖:
這樣Opencv_contrib-3.4.1就被添加進去了,然后我們修改關於Python的參數,在查找欄鍵入PYTHON:取消BIULD_opencv_python2,勾選INSTALL_PYTHON_EXMAPLES,這樣就設置為編譯Python3的版本了,
再次點擊Configure,如圖:
然后就可以生成編譯文件了,點擊Generate!
然后退出CMake,進入build文件夾下,此處再次確認,swap分區修改為至少5GB,python3的虛擬環境已經激活!
下述命令開始編譯:
cd build
make -j2 //或者 make -j4 或者 make 推薦 make -j2 , 用make -j4 樹莓派感覺受不了 make 感覺慢
然后就開始幾個小時等待了 中途不出錯 就安好了 ,若報錯 就重新make 一下 不行的話 就看報什么錯 對症下葯了
注意,在此期間,樹莓派要供電充足,不要運行其它任務,以免因為內存不夠什么的報錯。
編譯完成
make
命令執行完成之后,執行下面的命令安裝
sudo make install
sudo ldconfig
最后一步,因編譯后的庫文件cv2.so被輸出為cv2.cpython-35m-arm-linux-gnueabihf.so,這將導致該模塊在Python3中無法import進來,
我們到該庫文件的安裝目錄/usr/local/lib/python3.5/site-packages/下,將其重命名為cv2.so:
ls -l /usr/local/lib/python3.5/site-packages/
cd /usr/local/lib/python3.5/site-packages/
sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
再返回Python3的虛擬環境目錄下在對應的文件夾內建立一個鏈接,像這樣:
cd /home/pi/venv/lib/python3.5/site-packages/
ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so
這兩步就解決了cv2模塊無法導入的問題,現在讓我們嘗試在Python3中導入模塊並打印版本號:
注意 需要如果使用opencv 都得在虛擬環境中使用 (要做人臉識別什么的都得在虛擬環境中執行)
import cv2
print(cv2.__version__)
出現版本號則成功了
還有一點 用opencv 時可能會因為權限問題 報錯 所以給venv改改權限
sudo chmod 777 venv
點點贊 關注一下 ~_~