[翻譯]Python 2.7 和 Python 3+ 的OpenCV 3.0 安裝教程

這是在PyImageSearchAdrian 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.7Python 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:

Figure 1: 智能家居安防系統(tǒng)
Figure 1: 智能家居安防系統(tǒng)

看到這些是不是內(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, Scipyscikit-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 的教程里面一樣, 我們利用 virtualenvvirtualenvwrapper 來給我們不同的 Python 項目創(chuàng)建分離的 Python 環(huán)境.不過現(xiàn)在安裝 Open CV, virtualenvvirtualenvwrapper 不是必須要安裝的.
然而,它是標(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 的安裝.試試和我下面是不是一樣的.

Figure 2: 完成 numpy 的安裝
Figure 2: 完成 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 .

Figure 3: CMake 正常輸出
Figure 3: CMake 正常輸出

這里的關(guān)鍵點就是要確保, CMake 已經(jīng)正確地關(guān)聯(lián) Python 2.7numpy.
其次, 要注意下 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/.

Figure 4: Open CV 3.0 已經(jīng)成功地安裝
Figure 4: Open CV 3.0 已經(jīng)成功地安裝

你應(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 啦!

Figure 5: 輸出成功
Figure 5: 輸出成功

總結(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個小時了, 所以我把第三步驟暫時跳過了, 等后面有時間再補上.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子墓赴,更是在濱河造成了極大的恐慌,老刑警劉巖氛堕,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顾瞪,死亡現(xiàn)場離奇詭異掷邦,居然都是意外死亡汪诉,警方通過查閱死者的電腦和手機废恋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扒寄,“玉大人鱼鼓,你說我怎么就攤上這事∑烀牵” “怎么了蚓哩?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵构灸,是天一觀的道長上渴。 經(jīng)常有香客問我,道長喜颁,這世上最難降的妖魔是什么稠氮? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮半开,結(jié)果婚禮上隔披,老公的妹妹穿的比我還像新娘。我一直安慰自己寂拆,他們只是感情好奢米,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纠永,像睡著了一般鬓长。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尝江,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天涉波,我揣著相機與錄音,去河邊找鬼。 笑死啤覆,一個胖子當(dāng)著我的面吹牛苍日,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窗声,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼相恃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了笨觅?” 一聲冷哼從身側(cè)響起豆茫,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屋摇,沒想到半個月后揩魂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡炮温,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年火脉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柒啤。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡倦挂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出担巩,到底是詐尸還是另有隱情方援,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布涛癌,位于F島的核電站犯戏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拳话。R本人自食惡果不足惜先匪,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弃衍。 院中可真熱鬧呀非,春花似錦、人聲如沸镜盯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽速缆。三九已至降允,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間激涤,已是汗流浹背拟糕。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工判呕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人送滞。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓侠草,卻偏偏與公主長得像,于是被迫代替她去往敵國和親犁嗅。 傳聞我的和親對象是個殘疾皇子边涕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

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