https://www.cnblogs.com/Pyrokine/p/8921285.html
目標
編譯針對python的opencv以及擴展庫
環境
樹莓派4和3B+都可以
python3.7.3 python2.7共存
opencv3.4.8
--------------------------------------------------------------------------------------------------------------------------------
安裝過程准備1 關閉休眠(可以不管)准備2 不要切換安裝源(可以不切換)
為了避免安裝過程中樹莓派休眠,先關閉他自動休眠
https://www.cnblogs.com/kekeoutlook/p/11066283.html
一般為了安裝提速會切換清華或者阿里的源,樹莓派3B+好像沒這個問題,但是4代切換后,每次安裝東西都要提示安裝軟件依賴包問題不能安裝。
因為4代本來就是最新的系統,切換了源里面的很多軟件包都是最新的,但是opencv需要一些舊有的版本,就導致了已經安裝的最新的版本無法被低級別的取代,進一步阻止你安裝。
我是在重新刷了系統試出來的。
雖然有aptitude代替apt-get來安裝軟件,它會自動按照需求降低版本安裝,但是在上述問題下你連aptitude都安裝不了。
當然你可以嘗試不切換源先把aptitude安裝了,然后在切換源,之后用aptitude代替apt-get來安裝東西。我沒測試。
准備3 擴大交換分區(必須)
編譯到81%的時候卡死了,報錯:解決: g++: internal compiler error: Killed (program cc1plus),內存不夠
增加交換分區
https://www.cnblogs.com/kekeoutlook/p/11856057.html
網上說交換分區會造成內存卡損傷加快,如果使用完沒有大的使用程序,最好重新調整回去,原來是 100Mb
0 擴大TF卡的空間
如果不做這步操作,后面會出問題,比如卡死
輸入(命令行)
sudo raspi-config
然后選擇" Advanced Options "然后選擇" Expand Filesystem "然后重啟樹莓派
1 下載opencv以及contrib源碼包
1-1 下載opencv
https://github.com/Itseez/opencv/

https://github.com/opencv/opencv/releases

https://github.com/opencv/opencv/releases/tag/3.4.8

1-2 下載擴展庫
同樣的操作下載擴展庫
https://github.com/opencv/opencv_contrib
https://github.com/opencv/opencv_contrib/releases

https://github.com/opencv/opencv_contrib/releases/tag/3.4.8

我從自己的電腦下載好,拷貝到樹莓派,解壓。

2 更新apt(命令行)
sudo apt-get update sudo apt-get upgrade
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
4cmake配置
在opencv3.8.4創建 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=/home/pi/Work/1Sortware/opencv38_python37/opencv_contrib-3.4.8/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.7 PYTHON_INCLUDE_DIR=/usr/include/python3.7 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.7/site-packages/numpy/core/include ..
- 1修改自己的opencv版本
- 2修改opencv_contrib對應的路徑,這里用的是
OPENCV_EXTRA_MODULES_PATH=/home/pi/Work/1Sortware/opencv38_python37/opencv_contrib-3.4.8/modules
- 3修改python版本,這里用的是 python3.7
配置成功


5編譯和安裝
在build文件夾下,開始編譯
sudo make
漫長的等待,樹莓派3B+需要6-7個小時 樹莓派4正在編譯未知時間,肯定要比3B+快。
早上起來卡在81%報錯,內存不夠,開啟2G的交換空間,又可以繼續編譯了(剛開始還是卡,但是過了81%就快了)。

編譯成功

安裝
sudo make install
成功

兩個也可以同時執行
make && sudo make install
等待結束
千辛萬苦終於好了!!!
來試試目標識別速度提升。

