[2020.02.26 Update]
過去兩年多來,將Raspberry Pi 束諸高閣,專心準備PMP考試,終於在2015/11/17通過了考試;可是一年多來,沒有繼續研究樹莓派的相關功能。直到最近看到幾篇OpenCV的文章,想來試試看如何在Raspberry Pi 上執行影像處理的功能,於是拿出塵封已久的 Pi 2 Model B,繼續研究,看看是否能做出影像辨識等功能。以下是安裝OpenCV的各階段步驟:
階段一:安裝套件
安裝好作業系統後,進行系統更新及升級,並重新開機:
The following packages have unmet dependencies:
libtiff5-dev : Depends: libjpeg-dev
E: Unable to correct problems, you have held broken packages.
[2020.2.26] 上述安裝改成下一行指令,安裝各圖檔Library
階段二:下載 OpenCV
下載OpenCV 3,2,0版本,並解壓縮。
階段三:安裝設定 Python
[2020.2.26]改用 pi 4的版本,可以不需要安裝虛擬環境,numpy就在上一階段安裝。
安裝 pip :
我們可以暫時增加交換空間的大小,以幫助在 Pi 編譯 OpenCV 時可以加快速度,當 Pi 的實體RAM用完時,操作系統將使用交換空間。儘管交換空間比 RAM 慢很多,但在某些情況下它仍然很有用。修改交換檔設定:
CONF_SWAPSIZE=100
將數值改成 2048:
CONF_SWAPSIZE=2048
更改後,按 Ctrl + X , Y 然後按,保存文件 Enter 。
階段四:編譯並安裝 OpenCV
設定環境:如果有重新啟動系統、Logout或開啟新的終端機,就需要再執行以下指令,來啟動虛擬環境。
註:筆者只要使用 -j$(nproc) 這個參數,系統就會重新啟動,懷疑是因為 overclock的關係,關掉overclock之後,結果還是一樣,一執行就會重開機。還是使用不加參數的指令完成整個編譯工作,這個步驟大約需要 3小時,請耐心等待。
註2:我新購的 Pi 4 在編譯過程大約需要一個小時才能完成。
階段五:結束安裝
如果編譯階段沒有錯誤,OpenCV會安裝在 /usr/local/lib/python2.7/site-packages 目錄內,產生一個 cv2.so 的檔案。最後要將這個檔案建立連結到 cv 的虛擬環境。
步驟六:確認是否已安裝完成
如果要確認 OpenCV安裝完成,可重新登入或開啟新的終端機,輸入以下指令:
如果正確出現OpenCV的版本,就表示安裝成功。
過去兩年多來,將Raspberry Pi 束諸高閣,專心準備PMP考試,終於在2015/11/17通過了考試;可是一年多來,沒有繼續研究樹莓派的相關功能。直到最近看到幾篇OpenCV的文章,想來試試看如何在Raspberry Pi 上執行影像處理的功能,於是拿出塵封已久的 Pi 2 Model B,繼續研究,看看是否能做出影像辨識等功能。以下是安裝OpenCV的各階段步驟:
階段一:安裝套件
安裝好作業系統後,進行系統更新及升級,並重新開機:
$ sudo rpi-update $ sudo apt-get update $ sudo apt-get upgrade重新啟動Raspberry Pi。重新啟動系統後,安裝一些需要的編譯工具:
$ sudo apt-get install build-essential git cmake pkg-config安裝影像 I/O 套件,包含JPEG, PNG, TIFF等所需套件,這個套件可以載入各種不同的影像檔案格式,如:JPEG, PNG, TIFF等。
$ sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev註:安裝時出現以下錯誤:安裝 libtiff5-dev 前,需先安裝 libjpeg-dev
The following packages have unmet dependencies:
libtiff5-dev : Depends: libjpeg-dev
E: Unable to correct problems, you have held broken packages.
[2020.2.26] 上述安裝改成下一行指令,安裝各圖檔Library
$ sudo apt install libjpeg-dev libtiff-dev libjasper-dev libpng-dev libwebp-dev libopenexr-dev安裝 video I/O 所需套件,使用OpenCV載入video檔案:
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev libdc1394-22-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev安裝 GTK 開發 library,這個 library用在建立使用者介面 (Graphical User Interfaces, GUIs),並可以編譯 OpenCV的 highgui 子模組,才能顯示影像在畫面上。
$ sudo apt-get install libgtk-3-dev libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5各種不同的OpenCV如矩陣運作等的最佳化相依:
$ sudo apt-get install libatlas-base-dev liblapacke-dev gfortran安裝有關管理分層數據格式(HDF5)的套件:
$ sudo apt install libhdf5-dev libhdf5-103開始安裝 Python 3 開發工具:
$ sudo apt-get install python3-dev python3-pip python3-numpy
階段二:下載 OpenCV
下載OpenCV 3,2,0版本,並解壓縮。
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip $ unzip opencv.zip $ cd opencv比較好的方式是用 git去下載 opencv 原始碼:
$ git clone https://github.com/opencv/opencv.git $ git clone https://github.com/opencv/opencv_contrib.git
階段三:安裝設定 Python
安裝 pip :
$ wget https://bootstrap.pypa.io/get-pip.py $ sudo python get-pip.py
pip是一個以Python電腦程式語言寫成的軟體包管理系統,他可以安裝和管理軟體包,另外不少的軟體包也可以在「Python軟體包索引」(英語:Python Package Index,簡稱PyPI)中找到。[維基百科]
安裝 virtualenv 及 virtualenvwrapper:
安裝 virtualenv 及 virtualenvwrapper:
$ sudo pip install virtualenv virtualenvwrapper $ sudo rm -rf ~/.cache/pip更新個人的資料檔 ~/.profile,將以下三行加到.profile檔案最後面
# virtualenv and virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh重新載入個人的 .profile
$ source ~/.profile為 Python 建立一個名為 cv 的虛擬環境
$ mkvirtualenv cv安裝NumPy
$ pip install numpyNumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式函式庫。NumPy的前身Numeric最早是由Jim Hugunin與其它協作者共同開發,2005年,Travis Oliphant在Numeric中結合了另一個同性質的程式庫Numarray的特色,並加入了其它擴充功能而開發了NumPy。NumPy為開放原始碼並且由許多協作者共同維護開發。[維基百科]
我們可以暫時增加交換空間的大小,以幫助在 Pi 編譯 OpenCV 時可以加快速度,當 Pi 的實體RAM用完時,操作系統將使用交換空間。儘管交換空間比 RAM 慢很多,但在某些情況下它仍然很有用。修改交換檔設定:
$ sudo nano /etc/dphys-swapfile找到以下這行:
CONF_SWAPSIZE=100
將數值改成 2048:
CONF_SWAPSIZE=2048
更改後,按 Ctrl + X , Y 然後按,保存文件 Enter 。
階段四:編譯並安裝 OpenCV
設定環境:如果有重新啟動系統、Logout或開啟新的終端機,就需要再執行以下指令,來啟動虛擬環境。
$ workon cv建立編譯程式環境:
$ cd ~/opencv/ $ mkdir build $ cd build $ 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 INSTALL_PYTHON_EXAMPLES=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D CMAKE_SHARED_LINKER_FLAGS=-latomic \ -D BUILD_EXAMPLES=OFF ..開始編譯 OpenCV:
$ make -j$(nproc)參數 -j$(nproc) 表示在編譯OpenCV階段使用Raspberry Pi 2(或Pi 4)的最大核心處理器,以加快編譯速度。
註:筆者只要使用 -j$(nproc) 這個參數,系統就會重新啟動,懷疑是因為 overclock的關係,關掉overclock之後,結果還是一樣,一執行就會重開機。還是使用不加參數的指令完成整個編譯工作,這個步驟大約需要 3小時,請耐心等待。
註2:我新購的 Pi 4 在編譯過程大約需要一個小時才能完成。
$ sudo make install
階段五:結束安裝
如果編譯階段沒有錯誤,OpenCV會安裝在 /usr/local/lib/python2.7/site-packages 目錄內,產生一個 cv2.so 的檔案。最後要將這個檔案建立連結到 cv 的虛擬環境。
$ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/ $ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
步驟六:確認是否已安裝完成
如果要確認 OpenCV安裝完成,可重新登入或開啟新的終端機,輸入以下指令:
$ workon cv $ python >>> import cv2 >>> cv2.__version__ '3.2.0'
如果正確出現OpenCV的版本,就表示安裝成功。
[參考資料]
- pyimagesearch:How to install OpenCV 3 on Raspbian Jessie
- pimylifeup:Installing OpenCV on the Raspberry Pi
(cv) pi@raspberrypi:~/opencv-3.2.0/build $ cmake -D CMAKE_BUILD_TYPE=RELEASE
回覆刪除CMake Error: The source directory "/home/pi/opencv-3.2.0/build/CMAKE_BUILD_TYPE= RELEASE" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
到建立編譯程式環境時出現error
己解決,要在後面加 \
刪除應該是將指令貼到Blog時漏掉了,謝謝指正!!
刪除我照上面做,但我的 cv2.so 出現在 ~/opencv-3.2.0/build/lib/ 底下
回覆刪除有需要的朋友可參考~
請問 $ sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
回覆刪除出現問題 unable to locate package libjasper
該怎麼解決
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
刪除請問$ sudo apt-get install build-essential git cmake pkg-config
回覆刪除抓不到這個套件
我發現很多套件也都會抓不到
該怎麼解決
不知您有沒有先執行以下幾行更新系統指令,執行後再試一下。
刪除$ sudo rpi-update
$ sudo apt-get update
$ sudo apt-get upgrade
執行pip install numpy會跑很久都沒完成請問問題是?
回覆刪除我重開機後輸入workon cv底下都會顯示
回覆刪除bash: workon:命令找不到
每次都要先輸入$ source ~/.profile
再輸入workon cv
才能正確運行
請問這樣是正常的嗎?
不正常, 我安裝好OpenCV後,不會出現你所說的情況,建議重新建立SD卡映像檔試看看。
刪除請問更新個人的資料檔 ~/.profile,將以下三行加到.profile檔案最後面 這步驟能講的詳細ㄧ點嗎?剛買幾天不知怎麼使用����
回覆刪除你可以用文字編輯器nano開啟.profile:
刪除$ nano .profile
開啟後將那三行複製到nano編輯器貼上,按下Ctrl + X 離開時,按 Y存檔即可。
請問階段四那邊輸入mkdir build時,它跑出的結果是cannot create directory 'build' :File exists 要如何解決?
回覆刪除請問最後的步驟出現這行No module named cv2時該怎麼解決呢?
回覆刪除作者已經移除這則留言。
回覆刪除在執行make -j4時出現了[ 18%]Built target opencv_test_flann_pch_dephelp
回覆刪除Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2請問要如何解決?
樓主您好 我有個好奇一問,請問你的教學跟指令
回覆刪除sudo apt-get install python-opencv
是一樣的嗎?
請問在載openCV時sourceforge.net都連線不到怎麼辦?
回覆刪除請問在打 mkvirtualenv cv 時,出現
回覆刪除ERROR: Environment '/home/pi/.virtualenvs/cv' does not contain an activate script.
要怎麼解決?
謝謝~
不確定是哪裡的問題,可以試看看將以下幾行加在~/.profile內,重新開機或重新載入profile試看看。
刪除export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_ENV_BIN_DIR=bin
請問一下你說的加在~/.profile是指sudo rm -rf ~/.cache/pip這一行嘛?還需要另外那三行嘛
刪除樓主你好
回覆刪除我有問題想請教一下
當我輸入
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
總會出現
有些套件無法安裝。這可能意謂著您的要求難以解決,或是若您使用的是
unstable 發行版,可能有些必要的套件尚未建立,或是被移出 Incoming 了。
以下的資訊或許有助於解決當前的情況:
下列的套件有未滿足的相依關係:
libavcodec-dev : 相依關係: libavcodec58 (= 7:4.1.4-1~deb10u1)
相依關係: libavutil-dev (= 7:4.1.4-1~deb10u1) 但它卻將不會被安裝
相依關係: libswresample-dev (= 7:4.1.4-1~deb10u1) 但它卻將不會被安裝
libavformat-dev : 相依關係: libavformat58 (= 7:4.1.4-1~deb10u1) 但 7:4.1.4-1+rpt7~deb10u1 卻將被安裝
相依關係: libavutil-dev (= 7:4.1.4-1~deb10u1) 但它卻將不會被安裝
相依關係: libswresample-dev (= 7:4.1.4-1~deb10u1) 但它卻將不會被安裝
libswscale-dev : 相依關係: libavutil-dev (= 7:4.1.4-1~deb10u1) 但它卻將不會被安裝
相依關係: libswscale5 (= 7:4.1.4-1~deb10u1) 但 7:4.1.4-1+rpt7~deb10u1 卻將被安裝
E: 無法修正問題,您保留 (hold) 了損毀的套件。
請問這有解決辦法嗎
請問我在輸入 make -j4的時候出現
回覆刪除make: No targets specified and no makefile found. Stop
該怎麼處理
張貼留言