我在raspberry pi 3模型B v1.2中“制作”opencv2-4-9时出错

问题描述 投票:1回答:2

我想在2015年的raspberry pi 3 model b v1.2上安装opencv2.4.9。我按照this page安装opencv。当我“制作”opencv时,我看到这些错误:

[  1%] Built target opencv_ts_pch_dephelp
[  1%] Built target pch_Generate_opencv_ts
[  1%] Built target opencv_core_pch_dephelp
[  1%] Built target pch_Generate_opencv_core
[  3%] Built target opencv_core
[  3%] Built target opencv_imgproc_pch_dephelp
[  3%] Built target pch_Generate_opencv_imgproc
[  5%] Built target opencv_imgproc
[  6%] Built target opencv_highgui_pch_dephelp
[  6%] Built target pch_Generate_opencv_highgui
[  6%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_QT.cpp.o
In file included from /usr/include/GL/glx.h:32:0,
                 from /home/nao/Desktop/opencv-2.4.9/modules/highgui/src/window_QT.cpp:59:
/usr/include/GL/gl.h:134:17: error: conflicting declaration ‘typedef double GLdouble’
 typedef double  GLdouble; /* double precision float */
                 ^
In file included from /usr/include/qt4/QtOpenGL/QtOpenGL:5:0,
                 from /home/nao/Desktop/opencv-2.4.9/modules/highgui/src/window_QT.h:46,
                 from /home/nao/Desktop/opencv-2.4.9/modules/highgui/src/window_QT.cpp:47:
/usr/include/qt4/QtOpenGL/qgl.h:85:17: note: previous declaration as ‘typedef GLfloat GLdouble’
 typedef GLfloat GLdouble;
                 ^
In file included from /usr/include/GL/gl.h:2055:0,
                 from /usr/include/GL/glx.h:32,
                 from /home/nao/Desktop/opencv-2.4.9/modules/highgui/src/window_QT.cpp:59:
/usr/include/GL/glext.h:468:19: error: conflicting declaration ‘typedef std::ptrdiff_t GLsizeiptr’
 typedef ptrdiff_t GLsizeiptr;
                   ^
In file included from /usr/include/qt4/QtOpenGL/qgl.h:79:0,
                 from /usr/include/qt4/QtOpenGL/QtOpenGL:5,
                 from /home/nao/Desktop/opencv-2.4.9/modules/highgui/src/window_QT.h:46,
                 from /home/nao/Desktop/opencv-2.4.9/modules/highgui/src/window_QT.cpp:47:
/usr/include/GLES2/gl2.h:69:25: note: previous declaration as ‘typedef khronos_ssize_t GLsizeiptr’
 typedef khronos_ssize_t GLsizeiptr;
                         ^
In file included from /usr/include/GL/gl.h:2055:0,
                 from /usr/include/GL/glx.h:32,
                 from /home/nao/Desktop/opencv-2.4.9/modules/highgui/src/window_QT.cpp:59:
/usr/include/GL/glext.h:469:19: error: conflicting declaration ‘typedef std::ptrdiff_t GLintptr’
 typedef ptrdiff_t GLintptr;
                   ^
In file included from /usr/include/qt4/QtOpenGL/qgl.h:79:0,
                 from /usr/include/qt4/QtOpenGL/QtOpenGL:5,
                 from /home/nao/Desktop/opencv-2.4.9/modules/highgui/src/window_QT.h:46,
                 from /home/nao/Desktop/opencv-2.4.9/modules/highgui/src/window_QT.cpp:47:
/usr/include/GLES2/gl2.h:70:26: note: previous declaration as ‘typedef khronos_intptr_t GLintptr’
 typedef khronos_intptr_t GLintptr;
                          ^
modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:227: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_QT.cpp.o' failed
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_QT.cpp.o] Error 1
CMakeFiles/Makefile2:1868: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2

我看到this page出现此错误,但是当我将OPENGL更改为OPENGL-ES时没有任何变化。

我能做什么?

linux opencv opengl raspberry-pi3
2个回答
0
投票

我遇到了同样的问题,我按照this page的步骤,我可以在覆盆子中正确安装opencv。


1
投票

这是我解决它的方式。我在树莓派上运行Ubuntu 16.04 LTS LXDE。我不知道导致此问题的确切核心库(除了错误中提到的那个),所以这种方法可能有点通用。 (当所有其他方法都失败时)。

  1. 确保您拥有opencv和opencv_contrib对象的全新副本。
  2. git checkout --force 3.3.1(请通过运行git log或在github页面上查看下载位置的位置)
  3. 创建一个构建文件夹,并确保您拥有所有依赖库。这很棘手,因为其中一些是视觉的。例子包括:libgstreame1.0-base-dev
  4. 使用cmake CMAKE_BUILD_TYPE=RELEASE \

CMAKE_INSTALL_PREFIX=/usr/local \

INSTALL_C_EXAMPLES=ON \

INSTALL_PYTHON_EXAMPLES=ON \

WITH_TBB=ON \

WITH_V4L=ON \

WITH_QT=ON \

WITH_OPENGL=ON \

OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \

如果这不起作用,您可以在-D命令之后的每一行的开头添加cmake符号。如果要使用cuda(如果您的显卡带有适当的驱动程序),则必须通过在上面的命令中添加USE_CUDA=ON来添加变量。

如需更多帮助,请参阅thisthis

希望能帮助到你!

© www.soinside.com 2019 - 2024. All rights reserved.