树莓派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操作

==== 基本上就是以上问题了,若有其他问题后续更新。。。=====

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