樹莓派3B+編譯安裝opencv 3.4.0 for Python3.5 and Python2 完整教程

本文介紹了如何在樹莓派上安裝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箫爷,如圖所示:

python2環(huán)境下的OpenCV安裝

繼續(xù)輸入cv2.version,查看opencv的版本

python2環(huán)境下的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薄货。

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操作。

Advanced Options界面

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)]有嚴格按照上文的要求靶溜。如果成功开瞭,就可以開始最重要的編譯了懒震。

CMAKE結(jié)果

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)。錯誤提示如下:

machers.hpp處的錯誤提示

提示在/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文件路徑

解決方法:只需要將cuda.hpp這個文件拷貝到/home/pi/Downloads/opencv-3.4.0/modules/stitching/include/opencv2/stitching/detail(出現(xiàn)錯誤的文件的同級路徑下境肾,這里是machers.hpp的路徑下,


粘貼cuda.hpp文件到報錯路徑

然后將這個machers.hpp文件中的“include opencv2/xfeatures2d/cuda.hpp”的這個導(dǎo)包語句修改為include cuda.hpp)胆屿。


修改導(dǎo)包語句前后對比

作者在執(zhí)行完上述操作后奥喻,繼續(xù)執(zhí)行make時,發(fā)現(xiàn)后邊還有一處這個問題非迹,報錯如下(作者在編譯過程中共有兩個cuda.hpp文件缺失的問題环鲤,解決方法都是相同的,作者建議讀者一次性將這兩步操作執(zhí)行完再繼續(xù)執(zhí)行make指令憎兽。當(dāng)然解決完第一處錯誤后再次make時遇到問題冷离,再去修改也是可以的结闸。第二處錯誤如下:)

precomp.hpp處的錯誤提示

解決方法:再次將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)桦锄。


粘貼cuda.hpp到指定路徑

修改導(dǎo)包語句

然后執(zhí)行make指令,靜靜等待編譯蔫耽。最終編譯結(jié)果如下:

成功編譯完成

make命令執(zhí)行完成之后结耀,執(zhí)行下面的命令:

sudo make install

執(zhí)行完這個命令的結(jié)果如下:


sudo make install結(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

https://blog.csdn.net/qq_33475105/article/details/82819850

https://blog.csdn.net/u011736771/article/details/85960300

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牡拇,一起剝皮案震驚了整個濱河市魁瞪,隨后出現(xiàn)的幾起案子穆律,更是在濱河造成了極大的恐慌,老刑警劉巖导俘,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峦耘,死亡現(xiàn)場離奇詭異,居然都是意外死亡旅薄,警方通過查閱死者的電腦和手機辅髓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來少梁,“玉大人洛口,你說我怎么就攤上這事】Γ” “怎么了第焰?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長妨马。 經(jīng)常有香客問我挺举,道長,這世上最難降的妖魔是什么烘跺? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任豹悬,我火速辦了婚禮,結(jié)果婚禮上液荸,老公的妹妹穿的比我還像新娘瞻佛。我一直安慰自己,他們只是感情好娇钱,可當(dāng)我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布伤柄。 她就那樣靜靜地躺著,像睡著了一般文搂。 火紅的嫁衣襯著肌膚如雪适刀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天煤蹭,我揣著相機與錄音笔喉,去河邊找鬼。 笑死硝皂,一個胖子當(dāng)著我的面吹牛常挚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稽物,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼奄毡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贝或?” 一聲冷哼從身側(cè)響起吼过,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤锐秦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后盗忱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酱床,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年趟佃,在試婚紗的時候發(fā)現(xiàn)自己被綠了斤葱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡揖闸,死狀恐怖揍堕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汤纸,我是刑警寧澤衩茸,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站贮泞,受9級特大地震影響楞慈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啃擦,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一囊蓝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧令蛉,春花似錦聚霜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至祷安,卻和暖如春姥芥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汇鞭。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工凉唐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人霍骄。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓台囱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親腕巡。 傳聞我的和親對象是個殘疾皇子玄坦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容