前陣子起了一個念頭,機器人的核心大部份是放在視覺系統和機器學習,雖然以我這剛入門的樹莓派菜比巴來說
是一個非常大的挑戰,但即然起了念,就只能研究和實作看看。
其實我在灌opencv花了很多時間,算一算二個星期吧......,每天搞,打破了我的穩定起床和睡覺的時程
過程中,也以為我弄壞了我的pi3b+,又花了錢買了兩台,後來發現沒壞,也還好後來的實作三台都用的上。
兩個多星期以來,一些錯誤和心得整合一下,把它做成了步驟式的筆記,供大家參考和自己回憶。
接下來是一整串的安裝
我是參考這兩篇文章,自己有把它整合,因為發現若只照其中一篇還是會在裝numpy時出錯。
1:https://blog.csdn.net/talkxin/article/details/50471986
先概略說一下整體安裝方向如下:
第一個部份是在裝設python2.7和python3+之間的決擇。
第二個部份是把CONF_SWAPSIZE = 100轉換2048
第三個部份是numpy的部份裝完要檢查它的指向是否有指向你想要的檔案和匣。
第四個部份是把opencv轉向虛擬環境的python3+
接下來大方向有了,就按照步驟來實作,等待的過程很煎熬,請準備好咖啡,糧食^^
記憶卡建議16G以上
樹莓派
電風扇(吹樹莓派,不是吹自己XD)
一,環境編譯的準備
- sudo apt-get update
- sudo apt-get upgrade
二,擴展文件系統
- $ sudo raspi-config
選擇完後按finish,並重啓樹莓派。
三,安裝Cmake來編譯opencv
- $ sudo apt-get install build-essential git cmake pkg-config
四,安裝加載圖片和視頻文件解碼包
- $ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
- $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
- $ sudo apt-get install libxvidcore-dev libx264-dev
五,安裝GTK,GUI的後端
- $ sudo apt-get install libgtk-3-dev
六,安裝減少GTK警告的包
- $ sudo apt-get install libcanberra-gtk*
七,安裝opencv數值優化包
- $ sudo apt-get install libatlas-base-dev gfortran
八,安裝python2.7和python3+標頭文件(建議兩者都裝,但系統裡面一般都有安裝好對應的版本)
- sudo apt-get install python2.7-dev
- sudo apt-get install python3-dev
七,此次紀錄以opencv4.0.0為準軸,安裝opencv4.0.0,建議使用網址直接抓檔會快更多
- $ cd ~
- $ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.0.zip
- $ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.0.zip
八,解壓上面兩個檔
- $ unzip opencv.zip
- $ unzip opencv_contrib.zip
九,(非必須)更改過長的檔名
- $ mv opencv-4.0.0 opencv
- $ mv opencv_contrib-4.0.0 opencv_contrib
十,下載pip 檔
- wget https://bootstrap.pypa.io/get-pip.py
*從以下開始分為python2.7和python3+的環境,沒安裝好numpy指向出錯,最後跑的Cmake會出錯
十一,安裝以python2.7為主的pip工具(python3+請跳過此從十二開始)
1.Python2.7的虛擬環境配置
$ sudo python get-pip.py
2.安裝irtualenv工具
- sudo pip install virtualenv virtualenvwrapper
- sudo rm -rf ~/.cache/pip
3.裝虛擬環境寫入~/.profile
- nano ~/.profile
- export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7
- export WORKON_HOME=$HOME/.virtualenvs
- source /usr/local/bin/virtualenvwrapper.sh
4,保存後退出(ctrl+x)再按y
source ~/.profile
- 創建虛擬環境
- mkvirtualenv cv
- workon cv
此時可以看到pi的前面多了cv
6.安裝numpy
$ pip install numpy
十二,安裝以python3+為主的pip工具(python2.7請跳過此從十一開始)
1.Python3+的虛擬環境配置
$ sudo python3 get-pip.py
2.安裝irtualenv工具
- sudo pip3 install virtualenv virtualenvwrapper
- sudo rm -rf ~/.cache/pip
3.裝虛擬環境寫入~/.profile
- nano ~/.profile
- export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
- export WORKON_HOME=$HOME/.virtualenvs
- source /usr/local/bin/virtualenvwrapper.sh
4,保存後退出(ctrl+x)再按y
$ source ~/.profile
- 創建虛擬環境
$ mkvirtualenv cv -p python3 #很重要
$ workon cv
此時可以看到pi的前面多了cv
6.安裝numpy
$ pip3 install numpy
十三.在虛擬環境下編譯opencv
#如果無法建立build資料匣,請執行sudo su -
- cd ~/opencv
- mkdir build
- cd build
十四.Cmake
- cmake -D CMAKE_BUILD_TYPE=RELEASE \
- -D CMAKE_INSTALL_PREFIX=/usr/local \
- -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
- -D ENABLE_NEON=ON \
- -D ENABLE_VFPV3=ON \
- -D BUILD_TESTS=OFF \
- -D OPENCV_ENABLE_NONFREE=ON \
- -D INSTALL_PYTHON_EXAMPLES=OFF \
- -D BUILD_EXAMPLES=OFF ..
注意以下兩個地方,出錯的或指向的資料檔案不一樣,會報錯(如果沒有出現以下的指向,通常是上面第十二之5個步驟沒有指向完成)
十五.增加數莓派的SWAP
$ sudo nano /etc/dphys-swapfile
- # set size to absolute value, leaving empty (default) then uses computed value
- # you most likely don't want this, unless you have an special disk situation
- # CONF_SWAPSIZE=100
- CONF_SWAPSIZE=2048 #將上述CONF_SWAPSIZE=100改為2048
如果你不執行這一步驟,你的Pi很可能會掛起。
重啓交換服務
- $ sudo /etc/init.d/dphys-swapfile stop
- $ sudo /etc/init.d/dphys-swapfile start
十六.編譯opencv4.0.0
$ make
(建議用make即可,不要用make -j4,容易當機)
然後你就可以安心的去睡覺或喝咖啡,安裝過程很煎熬,利用睡前cmake會比較不浪費時間
...................................................................................................................................等到天荒地老後。。。。
終於完成了,但後面還有重要的事要做
十七.安裝opencv
- sudo make install
- sudo ldconfig
十八.將opencv4連接到python3.7環境(這一步驟非常重要)
1.先將下面資料匣的檔更改較短的檔名
- $ cd /usr/local/lib/python3.7/site-packages/
- $ sudo mv cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so
2.連結兩個不同資料匣裡的共同檔,以便相互連動
- cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
- 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
- $ ~cd
- $ workon cv
- $ python
- >>> import cv2
- >>> cv2.__version__
- '4.0.0'
- >>> exit()
註:以後每次要進入到(cv)pi@...時如下
- $ source ~/.profile
- $ workon cv
- (cv)pi@....$
把第十五步驟的SWAP改回來
照著第一步做到尾,保證成功
留言列表