樹莓派4 安裝OpenCV4
教程基於:
============ 更新 cmake 命令 ===============
- opencv4 cmake命令(務必注意:檢查所有PATH路徑是否在你本地存在)
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_C_EXAMPLES=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D CMAKE_SHARED_LINKER_FLAGS='-latomic' \
-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.7m.so PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include ..
# -j4 開啓4核心執行編譯(樹莓派4b 4個核心可以使用“-j4”選項,拉滿CPU以加速編譯),在某些情況下make編譯資源競爭衝突,也可不使用“-j4”
make -j4
=============================================
實際上按以上教程,使用樹莓派4b (4g內存版)安裝OpenCV4時還是出現各種問題,所以本人總結安裝過程中發生的大部分問題及解決方案如下:
安裝issues彙總:
1. 最好安裝和配置Java環境
- jdk1.8 下載
進入官網地址:https://www.oracle.com/java/technologies/jdk8-downloads.html#license-lightbox
下載:JDK-8u221-Linux的ARM32,VFP,hflt.tar.gz
注意不要去下載64位的jdk。
- java 環境配置
sudo vi /etc/profile
請根據實際情況配置JAVA_HOME路徑
...
#export PATH
export JAVA_HOME=/usr/local/java/latest
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
...
修改完畢後 “:x”保存退出,然後source一下,再檢查一下java是否安裝成功
source /etc/profile
java -version
2. “沒有規則可製作目標 xx, 由 xx 需求。停止”
make[2]: *** 沒有規則可製作目標“/usr/lib/libjpeg.so”,由“lib/libopencv_imgcodecs.so.4.0.0” 需求。 停止。
make[1]: *** [CMakeFiles/Makefile2:6422:modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/all] 錯誤 2
make: *** [Makefile:163:all] 錯誤 2
解決方法:
- 第一步檢查是否安裝"libpng-dev"
sudo apt install libpng-dev
- 第一步查找本機是否存在“libjpeg.so”
$ find / -iname "libpng*" 2>/dev/null
/home/pi/opencv/3rdparty/libpng
/usr/share/doc/libpng12-dev
/usr/share/doc/libpng12-0
/usr/share/doc/libpng12-0/libpng-1.2.54.txt.gz
/usr/share/doc/libpng-tools
/usr/share/doc/libpng16-16
/usr/share/doc/libpng16-16/libpng-manual.txt.gz
/usr/share/man/man3/libpng.3.gz
/usr/share/man/man1/libpng12-config.1.gz
/usr/share/man/man1/libpng-config.1.gz
/usr/share/doc-base/libpng16
/usr/include/libpng12
/usr/include/libpng
/usr/bin/libpng-config
/usr/bin/libpng12-config
/usr/lib/libpng.a
/usr/lib/arm-linux-gnueabihf/libpng12.a
/usr/lib/arm-linux-gnueabihf/pkgconfig/libpng12.pc
/usr/lib/arm-linux-gnueabihf/pkgconfig/libpng.pc
/usr/lib/arm-linux-gnueabihf/libpng16.so.16.36.0
/usr/lib/arm-linux-gnueabihf/libpng.a
/usr/lib/arm-linux-gnueabihf/libpng16.so.16
/usr/lib/arm-linux-gnueabihf/libpng12.so
/usr/lib/arm-linux-gnueabihf/libpng.so
/usr/lib/arm-linux-gnueabihf/libpng12.so.0
/usr/lib/libpng.so
/lib/arm-linux-gnueabihf/libpng12.so.0
/lib/arm-linux-gnueabihf/libpng12.so.0.54.0
。。。(已省略部分無關)
- 第三步查看原“libpng.so”文件屬性,發現鏈接是“x86_64”的鏈接庫,這對於arm架構樹莓派來說當然是不正確的。
pi@raspberrypi:~ $ ls -al /usr/lib/libpng.so
lrwxrwxrwx 1 root root 39 8月 25 01:22 /usr/lib/libpng.so -> /usr/lib/x86_64-linux-gnu/libpng12.so.0
- 第四步創建一個正確的“libpng.so”軟鏈文件
ln -s /usr/lib/libpng.so /usr/lib/arm-linux-gnueabihf/libpng12.so.0
最後重新進行make操作
3. ft2build.h未找到
ft2build.h:沒有那個文件或目錄
這是由於顯示文字信息時還需要與字體相關的東西,
解決方案:
- 第一步安裝庫
sudo apt-get install python-dev libfreetype6-dev libfontconfig1-dev
- 第二步安裝後檢查發現freetype頭文件沒在標準路徑,於是
ln -s /usr/include/freetype2/freetype/ /usr/include/freetype
最後重新進行make操作
4. gtk.h未找到
/home/pi/opencv/modules/highgui/src/window_gtk.cpp:48:10: fatal error: gtk/gtk.h: 沒有那個文件或目錄
#include <gtk/gtk.h>
^~~~~~~~~~~
compilation terminated.
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:89:modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_gtk.cpp.o] 錯誤 1
make[1]: *** [CMakeFiles/Makefile2:6916:modules/highgui/CMakeFiles/opencv_highgui.dir/all] 錯誤 2
解決方法:
- 第一步安裝 libgtk2.0-dev 或者 libgtk-3-dev:
sudo apt-get install libgtk-3-dev
- 第二步創建軟鏈接到頭文件標準路徑
sudo ln -s /usr/include/gtk-3.0/gtk/ /usr/include/gtk
最後重新進行make操作
==== 基本上就是以上問題了,若有其他問題後續更新。。。=====