本文介紹了如何在樹莓派上安裝OpenCV,分別提供運行在Python2和Python3的OpenCV的安裝教程旺隙。
?運行在Python2上的OpenCV安裝非常簡單闷盔,幾行命令即可搞定穆刻。運行在Python3上的OpenCV安裝比較麻煩,需要編譯安裝妄讯。本文兩種安裝方式均提供。根據(jù)你的需求安裝即可酷宵。本文默認你是新手小白亥贸,會一步步指導(dǎo)你安裝。本教程經(jīng)過作者親自測試浇垦,親測可行炕置。
本文發(fā)布于2019年7月29日。
硬件:Raspberry Pi 3 Model B+
系統(tǒng)版本: 2018-06-27-raspbian-stretch
OpenCV版本: OpenCV 3.4.0
OpenCV_Contrib版本:Opencv_contrib-3.4.0
安裝前提
1.配置好樹莓派的Raspbian操作系統(tǒng)
本教程使用的系統(tǒng)是2018年06月27日樹莓派官方發(fā)布的Raspbian-stretch操作系統(tǒng),百度網(wǎng)盤下載鏈接朴摊。提取碼: s3ja
下載好之后解壓好然后用燒錄軟件將系統(tǒng)燒寫到空白的SD卡中默垄,插如樹莓派即可,這里提供一個SD卡的格式化軟件提取碼:a4wz 和一個燒錄軟件提取碼:fzrf仍劈。
Ps:大家如果使用本教程的話最好(必須)使用我提供的這個下載鏈接2薇丁!贩疙!如果使用其他版本的系統(tǒng)的話讹弯,后續(xù)安裝步驟中的一些指令是有問題的,最主要的是那個CMAKE參數(shù)的設(shè)置这溅,每一個系統(tǒng)可能都是不一樣的组民,所以強烈推薦使用我提供的這個系統(tǒng)。當(dāng)然悲靴,如果有人能把這個教程當(dāng)做參考臭胜,然后去使用其他的系統(tǒng)的話,自然是最好的癞尚,如果是新手小白的話耸三,最好還是使用我的下載鏈接,然后配合本教程使用浇揩。
2.切換到國內(nèi)的apt-get下載源
為了提高樹莓派的下載速度仪壮,按照如下方式完成軟件源的更換:
1.編輯 /etc/apt/sources.list
文件,刪除原文件所有內(nèi)容胳徽,用以下內(nèi)容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
2.編輯 /etc/apt/sources.list.d/raspi.list
文件积锅,刪除原文件所有內(nèi)容,用以下內(nèi)容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
在完成上述兩部操作后养盗,執(zhí)行update命令
sudo apt-get update
在樹莓派安裝運行在Python2環(huán)境下的OpenCV
1.安裝
依次執(zhí)行以下兩條命令缚陷,
sudo apt-get install libopencv-dev
sudo apt-get install python-opencv
2.測試
在命令行中輸入python,回車往核,然后輸入import cv2箫爷,如圖所示:
繼續(xù)輸入cv2.version,查看opencv的版本
在樹莓派安裝運行在Python3上的OpenCV
1.安裝numpy
打開命令行界面,輸入以下命令聂儒,安裝Python科學(xué)計算庫numpy
sudo pip3 install numpy
tips:在執(zhí)行這條語句時虎锚,顯示:Requirement already satisfied in: numpy in /usr/lib/python3/dist-packages,提示界面如下,表示該系統(tǒng)已經(jīng)安裝了numpy薄货。
注意:如果使用其他Raspbian系統(tǒng)的話可以看一下這個提示翁都,如果使用的是我提供的系統(tǒng)的話,執(zhí)行下一步即可谅猾。因為我提供的系統(tǒng)的路徑在后續(xù)的步驟中是匹配的柄慰。這里提示的numpy的路徑是和后面CMAKE參數(shù)中PYTHON3_NUMPY_INCLUDE_DIRS的設(shè)置是保持一致的鳍悠。
2.在樹莓派設(shè)置中把根目錄擴大到整個SD卡
命令行界面輸入以下命令,進入樹莓派配置界面坐搔。用上下鍵和左右鍵切換光標位置藏研。選擇Advanced Options
sudo raspi-config
回車之后界面如下:
在選擇Advanced Options后,選擇Expand Filedsystem將根目錄擴展到這個SD卡概行,充分利用SD卡的存儲空間蠢挡。如果不進行這一步,后續(xù)命令會出現(xiàn)卡死凳忙。退出設(shè)置界面业踏,應(yīng)該會出現(xiàn)提示是否reboot系統(tǒng),在這里需要reboot(重啟樹莓派)涧卵,如果沒有出現(xiàn)勤家,就需要手動執(zhí)行reboot操作。
3.安裝OpenCV所需的庫
分別單獨運行以下命令
sudo apt-get install build-essential git cmake pkg-config -y
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
tips:本人在安裝這些軟件的過程中柳恐,出現(xiàn)了一個問題伐脖,查看原因是因為軟件源和系統(tǒng)不匹配的問題,故更換了一下軟件源乐设,如果在安裝過程中出現(xiàn)這類問題的話讼庇,本人在這里提供一個備用軟件源如下(編輯 /etc/apt/sources.list 文件,刪除原文件所有內(nèi)容近尚,用以下內(nèi)容取代)
備用軟件源:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
4.安裝OpenCV
分別單獨運行以下命令蠕啄,建議就在/home/pi/Downloads這個路徑下操作,以防后邊出現(xiàn)不必要的錯誤
cd /home/pi/Downloads
wget https://github.com/Itseez/opencv/archive/3.4.0.zip
wget https://github.com/Itseez/opencv_contrib/archive/3.4.0.zip
推薦:本人在執(zhí)行這個命令過程中肿男,下載速度很慢很慢(每秒幾個kB)介汹,故用U盤將這個文件傳輸?shù)綐漭傻?strong>/home/pi/Downloads目錄下却嗡。這里提供一個Opencv-3.4.0的百度云盤安裝包舶沛,使用本教程個的話還是使用這個提供的a安裝包最穩(wěn)妥。百度網(wǎng)盤鏈接窗价,提取碼:5b18
注意:將opencv-3.4.0.zip和opencv_contrib-3.4.0.zip都放在/home/pi/Downloads目錄下如庭,然后在該目錄下解壓這兩個壓縮包,命令如下:
cd /home/pi/Downloads
unzip opencv-3.4.0.zip
unzip opencv_contrib-3.4.0.zip
5.設(shè)置編譯參數(shù)
cd /home/pi/Downloads/opencv-3.4.0
mkdir build
cd build
設(shè)置CMAKE參數(shù)撼港,注意坪它,下面這是一行命令(包括最后那倆點兒,這里的路徑都是在系統(tǒng)中一一對應(yīng)的)帝牡,需要耐心等待十幾分鐘左右:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-3.4.0/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.5 PYTHON_INCLUDE_DIR=/usr/include/python3.5 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/site-packages/numpy/core/include ..
根據(jù)下圖判斷你是否配置成功了CMAKE往毡。如果失敗,可能是因為兩個壓縮包的路徑?jīng)]有嚴格按照上文的要求靶溜。如果成功开瞭,就可以開始最重要的編譯了懒震。
6.編譯
最后一步,也是最重要的一步
整個編譯過程差不多持續(xù)五個小時左右嗤详。本人在這一步遇到了兩類問題个扰,下方會提供每一類問題的詳細解決步驟,大家只需要按照我的操作步驟操作即可葱色。其實整體的思路就是缺什么補什么递宅,有的導(dǎo)入路徑有問題,就到報錯提示的路徑當(dāng)中去重新修改路徑苍狰,依次往復(fù)办龄,最終成功。
cd /home/pi/Downloads/opencv-3.4.0/build
make
開始執(zhí)行make編譯過程淋昭,界面如下:
編譯兩個小時后土榴,編譯進度40%,界面如下:
第一處錯誤:在編譯到87%的時候出現(xiàn)以下錯誤:
~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error:boostdesc_bgm.i: No such file or directory
根據(jù)錯誤提示可以知道响牛,是因為在這個~/opencv_contrib/modules/xfeatures2d/src/路徑下的boostdesc.cpp找不到boostdesc_bgm.i的源碼玷禽。所以缺什么補什么,拷貝源碼并生成同名文件呀打,放在這個 opencv_contrib/modules/xfeatures2d/src/路徑下(與報錯的bootstdesc.cpp文件同級的路徑)即可矢赁。
總共缺了以下幾個文件,都需要拷貝:
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
這里作者已經(jīng)將這些文件全部做好了贬丛,并提供了一個百度網(wǎng)盤鏈接撩银。提取碼:4ws6
將所有文件拷貝到出現(xiàn)錯誤提示的路徑下:opencv_contrib/modules/xfeatures2d/src/。然后在編譯失敗的窗口再次執(zhí)行make命令豺憔,繼續(xù)開始編譯额获。
第二處錯誤:在96%處出現(xiàn)。錯誤提示如下:
提示在/home/pi/Downloads/opencv-3.4.0/modules/stitching/include/opencv/stitching/detail中的machers.hpp文件中不存在“opencv2/xfeatures2d/cuda.hpp”文件恭应,原因是因為這個machers.hpp文件中有一個 include opencv2/xfeatures2d/cuda.hpp的導(dǎo)包語句抄邀,但是在這個指定的路徑下是找不到的,其實這個文件在是存在于其他的路徑下的昼榛。cuda.hpp文件路徑如下:
解決方法:只需要將cuda.hpp這個文件拷貝到/home/pi/Downloads/opencv-3.4.0/modules/stitching/include/opencv2/stitching/detail(出現(xiàn)錯誤的文件的同級路徑下境肾,這里是machers.hpp的路徑下,
然后將這個machers.hpp文件中的“include opencv2/xfeatures2d/cuda.hpp”的這個導(dǎo)包語句修改為include cuda.hpp)胆屿。
作者在執(zhí)行完上述操作后奥喻,繼續(xù)執(zhí)行make時,發(fā)現(xiàn)后邊還有一處這個問題非迹,報錯如下(作者在編譯過程中共有兩個cuda.hpp文件缺失的問題环鲤,解決方法都是相同的,作者建議讀者一次性將這兩步操作執(zhí)行完再繼續(xù)執(zhí)行make指令憎兽。當(dāng)然解決完第一處錯誤后再次make時遇到問題冷离,再去修改也是可以的结闸。第二處錯誤如下:)
解決方法:再次將cuda.hpp這個文件拷貝到/home/pi/Downloads/opencv-3.4.0/build/modules/stitching(出現(xiàn)錯誤的文件的同級路徑下,這里是precomp.hpp的路徑下酒朵,然后將這個precomps.hpp文件中 include opencv2/xfeatures2d/cuda.hpp的這個導(dǎo)包語句修改為include cuda.hpp)桦锄。
然后執(zhí)行make指令,靜靜等待編譯蔫耽。最終編譯結(jié)果如下:
make命令執(zhí)行完成之后结耀,執(zhí)行下面的命令:
sudo make install
執(zhí)行完這個命令的結(jié)果如下:
7.在Python3上測試OpenCV
安裝好之后,首先先測試opencv是否成功安裝匙铡,測試步驟如下:
在命令行中輸入python3图甜,回車
import cv2
回車,如沒有報錯鳖眼,繼續(xù)執(zhí)行下述命令:
cv2.__version__
回車黑毅,然后顯示opencv的版本信息,此時說明Python3環(huán)境下的OpenCV安裝成功钦讳。驗證過程如下:
恭喜你?笫荨!愿卒!此時你已經(jīng)完成了Python3環(huán)境下的OpenCV在樹莓派上的所有安裝過程8咳ァ!
作者批注:
我在網(wǎng)上看了很多樹莓派安裝opencv的教程琼开,也按照他們的教程進行了嘗試易结,在嘗試了三四次失敗之后總結(jié)如下:有的教程需要配置虛擬環(huán)境,嘗試之后不知為什么沒有成功柜候,有的要修改內(nèi)存分配空間搞动,然后使用樹莓派的四個CPU同時進行編譯樊零,但是看到有人說這種編譯方式容易出現(xiàn)錯誤府怯,故筆者在安裝過程中老老實實的使用單核進行編譯∑N看到這么多的教程這么多的坑飞主,我想通過這篇教程讓每一個想要上手的人都能快速入門opencv狮惜,而不是被安裝過程中的各種故障和問題嚇到退縮高诺。大家也只需要按照我的這一篇教程進行安裝就可以完成整個安裝過程碌识,不需要再去參考其他的文章了,歡迎大家在評論區(qū)中積極探討虱而,喜歡就點個贊筏餐,謝謝
本人在安裝過程中參考了很多文章,主要參考文章如下:
http://www.reibang.com/p/56929416b4a1#!/xh