close

前陣子起了一個念頭,機器人的核心大部份是放在視覺系統和機器學習,雖然以我這剛入門的樹莓派菜比巴來說

是一個非常大的挑戰,但即然起了念,就只能研究和實作看看。

其實我在灌opencv花了很多時間,算一算二個星期吧......,每天搞,打破了我的穩定起床和睡覺的時程

過程中,也以為我弄壞了我的pi3b+,又花了錢買了兩台,後來發現沒壞,也還好後來的實作三台都用的上。

兩個多星期以來,一些錯誤和心得整合一下,把它做成了步驟式的筆記,供大家參考和自己回憶。

接下來是一整串的安裝

我是參考這兩篇文章,自己有把它整合,因為發現若只照其中一篇還是會在裝numpy時出錯。

1:https://blog.csdn.net/talkxin/article/details/50471986

2:https://translate.google.com/translate?hl=zh-TW&sl=en&u=https://www.pyimagesearch.com/2018/09/26/install-opencv-4-on-your-raspberry-pi/&prev=search

先概略說一下整體安裝方向如下:

第一個部份是在裝設python2.7python3+之間的決擇。

第二個部份是把CONF_SWAPSIZE = 100轉換2048

第三個部份是numpy的部份裝完要檢查它的指向是否有指向你想要的檔案和匣。

第四個部份是把opencv轉向虛擬環境的python3+

 

接下來大方向有了,就按照步驟來實作,等待的過程很煎熬,請準備好咖啡,糧食^^

記憶卡建議16G以上

樹莓派

電風扇(吹樹莓派,不是吹自己XD)

 

,環境編譯的準備

  1. sudo apt-get update  
  2. sudo apt-get upgrade  

 

,擴展文件系統

  1. $ sudo raspi-config    
  2. undefined

 

 

undefined

選擇完後按finish,並重啓樹莓派。

 

,安裝Cmake來編譯opencv

  1. $ sudo apt-get install build-essential git cmake pkg-config  

 

,安裝加載圖片和視頻文件解碼包

  1. $ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev  
  2. $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev  
  3. $ sudo apt-get install libxvidcore-dev libx264-dev  

 

,安裝GTKGUI的後端

  1. $ sudo apt-get install libgtk-3-dev  

 

,安裝減少GTK警告的包

  1. $ sudo apt-get install libcanberra-gtk*  

 

,安裝opencv數值優化包

  1. $ sudo apt-get install libatlas-base-dev gfortran  

 

,安裝python2.7python3+標頭文件(建議兩者都裝,但系統裡面一般都有安裝好對應的版本)

  1. sudo apt-get install python2.7-dev  
  2. sudo apt-get install python3-dev  

,此次紀錄以opencv4.0.0為準軸,安裝opencv4.0.0,建議使用網址直接抓檔會快更多

  1. $ cd ~  
  2. $ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.0.zip  
  3. $ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.0.zip  

 

,解壓上面兩個檔

  1. $ unzip opencv.zip  
  2. $ unzip opencv_contrib.zip  

 

,(非必須)更改過長的檔名

  1. $ mv opencv-4.0.0 opencv  
  2. $ mv opencv_contrib-4.0.0 opencv_contrib  

 

,下載pip

  1. wget https://bootstrap.pypa.io/get-pip.py  

 

*從以下開始分為python2.7python3+的環境,沒安裝好numpy指向出錯,最後跑的Cmake會出錯

十一,安裝以python2.7為主的pip工具(python3+請跳過此從十二開始)

 

1.Python2.7的虛擬環境配置

      $ sudo python get-pip.py

 

 

2.安裝irtualenv工具

  1. sudo pip install virtualenv virtualenvwrapper  
  2. sudo rm -rf ~/.cache/pip  

 

3.裝虛擬環境寫入~/.profile

  1. nano ~/.profile  
  2. export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7  
  3. export WORKON_HOME=$HOME/.virtualenvs  
  4. source /usr/local/bin/virtualenvwrapper.sh

 

4,保存後退出(ctrl+x)再按y

      source ~/.profile 

 

 

 

  1. 創建虛擬環境
  1. mkvirtualenv cv  
  2. workon cv  

 

此時可以看到pi的前面多了cv

undefined

 

6.安裝numpy

   $ pip install numpy

 

十二,安裝以python3+為主的pip工具(python2.7請跳過此從十一開始)

 

1.Python3+的虛擬環境配置

$ sudo python3 get-pip.py 

 

2.安裝irtualenv工具

  1. sudo pip3 install virtualenv virtualenvwrapper  
  2. sudo rm -rf ~/.cache/pip 

 

3.裝虛擬環境寫入~/.profile

  1. nano ~/.profile  
  2. export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  
  3. export WORKON_HOME=$HOME/.virtualenvs  
  4. source /usr/local/bin/virtualenvwrapper.sh

 

4,保存後退出(ctrl+x)再按y

$ source ~/.profile

 

  1. 創建虛擬環境

$  mkvirtualenv cv -p python3  #很重要

$ workon cv  

此時可以看到pi的前面多了cv

undefined

 

6.安裝numpy

  $ pip3 install numpy

 

十三.在虛擬環境下編譯opencv

#如果無法建立build資料匣,請執行sudo su -

  1. cd ~/opencv  
  2. mkdir build  
  3. cd build 

 

十四.Cmake

 

  1. cmake -D CMAKE_BUILD_TYPE=RELEASE \  
  2.     -D CMAKE_INSTALL_PREFIX=/usr/local \  
  3.     -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \  
  4.     -D ENABLE_NEON=ON \  
  5.     -D ENABLE_VFPV3=ON \  
  6.     -D BUILD_TESTS=OFF \  
  7.     -D OPENCV_ENABLE_NONFREE=ON \  
  8.     -D INSTALL_PYTHON_EXAMPLES=OFF \  
  9.     -D BUILD_EXAMPLES=OFF ..  

注意以下兩個地方,出錯的或指向的資料檔案不一樣,會報錯(如果沒有出現以下的指向,通常是上面第十二之5個步驟沒有指向完成)

undefined

undefined

十五.增加數莓派的SWAP

     $ sudo nano /etc/dphys-swapfile

 

  1. # set size to absolute value, leaving empty (default) then uses computed value  
  2. #   you most likely don't want this, unless you have an special disk situation  
  3. # CONF_SWAPSIZE=100  
  4. CONF_SWAPSIZE=2048  #將上述CONF_SWAPSIZE=100改為2048

如果你不執行這一步驟,你的Pi很可能會掛起。

重啓交換服務

  1. $ sudo /etc/init.d/dphys-swapfile stop  
  2. $ sudo /etc/init.d/dphys-swapfile start  

 

 

十六.編譯opencv4.0.0

     $   make

 

(建議用make即可,不要用make -j4,容易當機)

然後你就可以安心的去睡覺或喝咖啡,安裝過程很煎熬,利用睡前cmake會比較不浪費時間

...................................................................................................................................等到天荒地老後。。。。

終於完成了,但後面還有重要的事要做

cmake完成.jpg

十七.安裝opencv

  1. sudo make install  
  2. sudo ldconfig

 

十八.opencv4連接到python3.7環境(這一步驟非常重要)

1.先將下面資料匣的檔更改較短的檔名

  1. $ cd /usr/local/lib/python3.7/site-packages/  
  2. $ sudo mv cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so

2.連結兩個不同資料匣裡的共同檔,以便相互連動

  1. cd ~/.virtualenvs/cv/lib/python3.7/site-packages/  
  2. ln -s /usr/local/lib/python/cv2/python-3.7/site-packages/cv2.so cv2.so

不過後來我發現每次要進入import cv2,都要先進入/usr/local/lib/python3.7/

後來找到原因…..,因為在上個步驟(十八),假如用第十八步驟連結無效,就請照上面1,2提示的檔匣去找出  /usr/local/lib/python3.7/site-packages//.virtualenvs/cv/lib/python3.7/site-packages/裡面的cv2.cpython-37m-arm-linux-gnueabihf.so,把它都改成cv2.so。

最後測試看是否成功啓用import cv2

  1. $ ~cd  
  2. $ workon cv  
  3. $ python  
  4. >>> import cv2  
  5. >>> cv2.__version__  
  6. '4.0.0'  
  7. >>> exit()  

:以後每次要進入到(cv)pi@...如下

  1. $ source ~/.profile  
  2. $ workon cv  
  3. (cv)pi@....$ 

把第十五步驟的SWAP改回來

照著第一步做到尾,保證成功

arrow
arrow
    文章標籤
    opencv&pi3b+ opencv4 numpy
    全站熱搜
    創作者介紹
    創作者 定凱 的頭像
    定凱

    大的人身,小的心靈…保持赤子之心。

    定凱 發表在 痞客邦 留言(0) 人氣()