樹莓派4 安裝opencv4 報錯解決

樹莓派4 安裝OpenCV4

教程基於:

  1. 在Raspberry Pi上安裝OpenCV 4
  2. 樹莓派4(RaspberryPi4)安裝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操作

==== 基本上就是以上問題了,若有其他問題後續更新。。。=====

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章