這是在PyImageSearch上Adrian Rosebrock寫的一篇在
Raspberry Pi
上安裝 OpenCV 的教程, 感覺寫的還蠻詳細的, 當(dāng)然文章里面的操作不只適用Raspberry Pi
,Debian
系應(yīng)該能直接用下面的shell
命令來安裝.
如果想盡快安裝,直接看shell代碼,文字不用看
老實說, 我很喜歡用 Raspberry Pi
來做 Computer Vision
的教學(xué)工作. 對于全世界做 CV
的老師, 學(xué)生, 程序員來說, Raspberry Pi 可能是最好的工具, 有之一的.
這是一塊很便宜的開發(fā)板, 雖然便宜但不能代表它不能做很多有趣的事. 對于愛好者和車庫里的黑客來說,這玩意還是超級贊的. 如果你做項目, 能夠在一塊很便宜又不失可靠的硬件板子把 CV
的算法跑起來, 是不是很屌? 這玩意兒在研究學(xué)術(shù)界也是被廣泛推崇和應(yīng)用的. 鑒于它這么低廉的價格, 我們完全可以用一批 Raspberry Pi
, 部署一個集群來做 CV
的研究.
由于它這些牛逼的特性, 又能在各個領(lǐng)域一顯身手, 肯定一得很大一批人的芳心. 難怪我 在 PyImageSearch 上的這篇簡明教程: installing OpenCV and Python on your Raspberry Pi 2 and B+, 能一直保持瀏覽數(shù)第一.
估計那篇文章好景不長, 我現(xiàn)在這篇文章可能會勇奪桂冠, 躍居榜首.所謂后來者居上嘛.
下面我就來一步步地教大家怎么在樹莓派給 Python 2.7
和 Python 3.+
安裝 Open CV 3.0
(發(fā)行
).
跟著我一步步來操作, 最后你肯定 在樹莓派上 安裝好了 Open CV 3.0
庫, 只是 Python 3+
和 Python 2.7+
的區(qū)別而已. 這絕逼是一個很刺激的教程, 為啥呢? Open CV 庫目前是依賴 Python 2.7
的, 不過對于 Open CV 3.0
我要發(fā)大招讓它也能在 我的 Python 3+
上妥妥的跑起來.
你肯定在PyImageSearch上的某個陰暗的角落里, 看到過 在樹莓派上 用 Open CV
來做的一些牛逼項目, 比如: automated home surveillance and security system ,用的是 Python + OpenCV + Dropbox + Raspberry Pi 2:
看到這些是不是內(nèi)心激動難耐, 那么跟著我接著干吧.
在 Raspberry Pi 2 上 Python 2.7+ 和 Python 3+ 安裝OpenCV 3.0
前方高能!!! 安裝,大家可以直接看shell命令
下面會詳細地介紹如何 給Pi 2 安裝 Open CV 3.0
for Python 2.7+
和 Python 3+
. Pi B+
也是適用的哦! 不過, 我還是推薦大家用 Pi 2
, 畢竟新出來的, 性能提升了不少, 用來做 CV
不會覺得很蛋疼.
為了讓教程簡介明了, 我把具體內(nèi)容大致分為了四個步驟, 大家一步步來:
步驟一: 安裝依賴. 不管你是用
Python 2.7+
還是Python 3+
, 你都需要用apt-get
來安裝 安裝Open CV
所需要的包,庫等依賴.步驟二: 編譯
Python 2.7+
版的Open CV
. 如果你準(zhǔn)備用Python 2.7
那么這一步你肯定要做的, 做完之后呢, 你就可以跳過步驟三, 直奔步驟四.步驟三: 編譯
Python 3+
版的Open CV
. 同樣地, 你準(zhǔn)備用Python 3+
的話, 步驟二是不用做的, 直接從步驟一來到這里.步驟四: 確認(rèn)安裝成功. 在你安裝完成之后, 這一步驟就來確認(rèn)
Open CV
是否安裝成功, 能不能正常地工作.
Python 2.7+ 還是 Python 3+?
在開始正式安裝之前, 你需要搞清楚你到底是要安裝哪一個版本的.
反正兩個版本各有利弊吧. 你自己選擇一個你看著順眼的, 這個真沒有什么特別的不同. 如果你覺得用著Python 3+
舒服, 你就選擇 Python 3+
, Python 2.7+
用習(xí)慣了, 你就裝 Python 2.7+
版本的. 但是如果你平時用 Python
來做一些CS
相關(guān)的開發(fā), 譬如: Machine Learning
, Data Mining
, NLP
, 或者 Deep Learning
, 你可能會更傾向于選擇 Python 2.7
, 至少目前是這樣的情況. 這些方面的大部分庫和包都是 Python 2.7+
的, 譬如: NumPy, Scipy 和 scikit-learn, 雖然社區(qū)里面都在努力地向 Python 3+
遷移, 但是有那么一部分還是只能在 Python 2.7+
下穩(wěn)定工作的 .
步驟一: 安裝包依賴
下面我們就開始 Open CV
安裝的第一步吧.
耗時:9m 5s
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
下面我們安裝從源碼構(gòu)建 Open CV
的相關(guān)工具:
耗時: 43s
sudo apt-get install build-essential git cmake pkg-config
加載不同格式圖片的工具包:
**耗時: ** 27s
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
視頻流 I/O 包
**耗時: ** 26s
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
GTK, 給圖形界面操作用的
**耗時: ** 2m 20s
sudo apt-get install libgtk2.0-dev
安裝下面的包可以在 Open CV
里面優(yōu)化各種函數(shù)
**耗時: **46s
sudo apt-get install libatlas-base-dev gfortran
現(xiàn)在, 我們的準(zhǔn)備工作完成了. 接下來我們從 Github
上把 Open CV
的源碼 pull
下來, 然后切換到新的版本 3.0.0
.
**耗時: ** 8m 34s
譯者注: 前面時間還基本大差不差, 這里國內(nèi)拉下來, 得要不少時間, 至少我這里的網(wǎng)絡(luò)是這樣的.
cd ~ /*譯者注: 這一步文件夾自己選, 不一定非得放在 home, 我是強迫癥患者, 喜歡到 ~/Downloads 下*/
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0
要完整地安裝 OpenCV 3.0
的話, 最好把 opencv_contrib 也拉下來
耗時:1m 7s
cd ~ /*這一步文件夾自己選, 不一定非得放在 home, 我是強迫癥患者, 喜歡到 ~/Downloads 下*/
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0
現(xiàn)在我們到了人生的十字路口
, 啊, 不對, 是選擇你自己的真命天子
, 又錯了, 是某種 Open CV
來安裝.
繼續(xù)步驟二, 你會得到 Python 2.7+
版的, 直接跳到步驟三就是 Python 3+
版.隨便你自己怎么選, 不過你得考慮清楚, 請謹(jǐn)慎選擇, 沒有機會給你反悔的哦.
當(dāng)然, 是有方法讓二者共存的, 不過不是這篇文章的范疇啦, 以后我會再寫一篇, 教你們怎么左擁右抱.
步驟二: 在 Python 2.7+ 下編譯 Open CV
安裝編譯所需要的頭文件, 也就是 Python 的開發(fā)包啦
耗時: 1m 20s
sudo apt-get install python2.7-dev
安裝 Python2.7+
兼容的包管理工具: pip
耗時: 33s
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
和我們之前在安裝 OpenCV 2.4.X
的教程里面一樣, 我們利用 virtualenv 和 virtualenvwrapper 來給我們不同的 Python
項目創(chuàng)建分離的 Python
環(huán)境.不過現(xiàn)在安裝 Open CV
, virtualenv 和 virtualenvwrapper 不是必須要安裝的.
然而,它是標(biāo)準(zhǔn)的 Python
開發(fā)環(huán)境, 我推薦你們?nèi)グ惭b使用, 后面我會假設(shè)你們都已經(jīng)安裝使用它了.
用 pip
可以很簡單地完成安裝
耗時: 17s
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
接下來, 我們需要設(shè)置環(huán)境變量, 隨便用一個你們自己喜歡的編輯器, 來打開 ~/.profile
,如果不存在就新建一個, 然后把下面的幾行添加到文件末尾
# virtualenv and virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
現(xiàn)在 .profile
文件已經(jīng)更新好了, 下一步就是要來加載它. 你需要重新打開一個終端, 或者簡單地使用 source
這個命令
source ~/.profile
現(xiàn)在我們要開創(chuàng)建一個做 CV
工作的虛擬環(huán)境 cv3
(隨便命名) 了
耗時: 19s
mkvirtualenv cv3
如果你在之后需要訪問你的虛擬環(huán)境, 特別是你登出或者重啟你的機器之后, 你可能需要 source
一下你的 ~/.profile
. (譯者注:
當(dāng)然, 你可以把剛才添加到 ~./profile
文件中的內(nèi)容, 添加到 /etc/profile
中去, 做一個全局設(shè)置, 并不推薦這么做.) 然后用 workon
命令.
workon cv3
之后你的 shell
就只能使用和設(shè)置在 cv3
這個虛擬環(huán)境中的包了.
繼續(xù), 我們其實只依賴一個 Python
庫: Numpy
, 請確保在你的虛擬環(huán)境 cv3
中已經(jīng)安裝 numpy
.
耗時: 13m 17s
譯者注: 這個包感覺我直接安裝的時候要不了這么久, 可能是虛擬環(huán)境會慢點?
pip install numpy
在我們用了 sudo pip
之后, .cache
文件價會報權(quán)限錯誤, 這是我們只需要把 .cache/pip
刪掉, 然后重新安裝 numpy
.
sudo rm -rf ~/.cache/pip/
pip install numpy
哈哈, 完成啦, 你現(xiàn)在應(yīng)該在你的虛擬環(huán)境 cv3
中完成了 numpy
的安裝.試試和我下面是不是一樣的.
注意: 這些操作可能會非常的耗時間, 可能在完成一項安裝之后, 關(guān)機或這登出了, 在你下次繼續(xù)的時候一定記得要切換至你的虛擬環(huán)境, 不然你的繼續(xù)安裝和你之前的操作不是在同一個環(huán)境下,或?qū)е履愫竺娴牟僮鞒霈F(xiàn)錯誤.
我在說一句, 在你繼續(xù)下一個命令前, 千萬千萬要確保你是在你的虛擬環(huán)境下, 我的本例子中是: cv3
.
workon cv3
現(xiàn)在你可以用 cmake
來設(shè)置編譯了
cd ~/opencv
mkdir build
cd build
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=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
CMake 大概會花 30s, 在它完成之后, 當(dāng)然你得保證它沒有報錯, 你要檢查下1輸出的內(nèi)容, 特別是 Python 2
這個部分.
譯者注:
這里我們國內(nèi)用戶很可能會報錯, 原因是 ippicv linux 這個包下載速度很慢, 導(dǎo)致下載未完成連接超時.解決的辦法是手動去下載這個文件: ippicv linux .
這里的關(guān)鍵點就是要確保, CMake 已經(jīng)正確地關(guān)聯(lián) Python 2.7
和 numpy
.
其次, 要注意下 package path
的配置, 這個文件夾是存放 Open CV 3.0
鏈接及其編譯.從那我們可以看到我們的 Open CV 3.0
鏈接 存放在 /usr/local/lib/python2.7/site-packages
.
下面我們就可以正式地編譯 Open CV 3.0
耗時: 65m 33s
make -j4 /*譯者注: 這里的 4 是對于 Pi2 上的四核, 如果你電腦6核, 就可以是 -j6*/
編譯沒有錯誤, 現(xiàn)在就可以安裝了
sudo make install
sudo ldconfig
現(xiàn)在 Open CV 3.0
已經(jīng)成功地安裝在了你的機器上, 下面只需要搞清楚它在哪.
還記得上面我提到的 package path
嗎?
看下這個文件夾, 我的是 /usr/local/lib/python2.7/site-packages/
.
你應(yīng)該看到 cv2.so
, 這是我們真正的 Python
需要的庫. 下面兩步是把 cv2.so
鏈接到我們的虛擬環(huán)境 cv3
中去
cd ~/.virtualenvs/cv3/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
完啦, 你現(xiàn)在已經(jīng)把 Open CV 3.0
安裝好了, 到步驟四去, 檢查一下是不是安裝正確.
步驟三: 在 Python 3+ 下編譯 Open CV
待續(xù)...
步驟四: 確認(rèn) Open CV 3.0 安裝成功
在我們結(jié)束教程之前, 你最好還是檢查一下是不是安裝正確了. 打開一個終端, 進入你的虛擬環(huán)境, 進去 Python shell
, 導(dǎo)入 OpenCV
新建文件 test.py, 輸入一下內(nèi)容
import cv2
if __name__ == '__main__':
print(cv2.__version__)
workon cv
python test.py
如果輸出 '3.0.0'
, 就 OK 啦!
總結(jié)
這篇文章中, 我已經(jīng)詳細地介紹如何在 Python 2.7+
和 Python 3+
下安裝 Open CV 3.0
了. 我安裝時每一個步驟話的時間也給出以便大家參考.只要記住一點, 就是在你重啟或者重登陸到機器中時, 你得先用 workon
切換至你的虛擬工作環(huán)境.
譯者:
一開始, 發(fā)現(xiàn)這篇文章挺使用的,也還蠻簡單, 就想著話點時間翻譯下, 以便查閱. 文章看著很長其實廢話很多, 有用的也就那些代碼段, 如果大家只是為了快速安裝,直接復(fù)制代碼就好了. 不過, 老外的教程都是這樣, 講的很細, 有些重點還不止一遍兩遍的提醒.這足以見得他們做事蠻認(rèn)真負責(zé)的. 這文章簡直太詳細了, 到目前已經(jīng)花了將近5個小時了, 所以我把第三步驟暫時跳過了, 等后面有時間再補上.