【问题标题】:Trying to build OpenCV 2.4.1 with OpenGL support尝试构建具有 OpenGL 支持的 OpenCV 2.4.1
【发布时间】:2012-06-17 15:04:18
【问题描述】:

我正在尝试构建具有 OpenGL 支持的 OpenCV 2.4.1,但它一直在失败。我在我的 Ubuntu 11.04 中安装了 OpenGL,库像往常一样位于 /usr/lib/libGL.so 下。我知道我的 OpenGL 安装是正确的,因为我有 C++ OpenGL 项目可以编译、链接和运行正常。

我按如下方式运行 cmake 命令,因为我需要 CUDA 和 OpenGL 支持。

/data/OpenCV-2.4.1/build $ cmake -D WITH_OPENGL=ON -D CMAKE_BUILD_TYPE=RELEASE -D WITH_CUDA=ON -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda/ -D BUILD_EXAMPLES=ON -D WITH_TBB=ON ..

这是我从中得到的输出,告诉我 CUDA 被正确检测到,但 OpenGL 没有

-- General configuration for OpenCV 2.4.1 =====================================
-- 
--   Platform:
--     Host:                        Linux 2.6.35-32-generic x86_64
--     CMake:                       2.8.8
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/make
--     Configuration:               RELEASE
-- 
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ Compiler:                /usr/bin/c++ (ver 4.4.4)
--     C++ flags (Release):         -Wall -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -ffunction-sections -O3 -DNDEBUG   -DNDEBUG
--     C++ flags (Debug):           -Wall -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG -ggdb3
--     C Compiler:                  /usr/bin/gcc
--     C flags (Release):           -Wall -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -ffunction-sections -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -Wall -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG -ggdb3
--     Linker flags (Release):      
--     Linker flags (Debug):        
-- 
--   OpenCV modules:
--     To be built:                 calib3d contrib core features2d flann gpu highgui imgproc legacy ml nonfree objdetect photo python stitching ts video videostab
--     Disabled:                    -
--     Disabled by dependency:      -
--     Unavailable:                 androidcamera java
-- 
--   GUI: 
--     QT 4.x:                      NO
--     GTK+ 2.x:                    YES (ver 2.22.0)
--     GThread :                    YES (ver 2.26.1)
--     GtkGlExt:                    NO
--     OpenGL support:              NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib64/libz.so (ver 1.2.3.4)
--     JPEG:                        /usr/lib64/libjpeg.so (ver 62)
--     PNG:                         /usr/lib64/libpng.so (ver 1.2.44)
--     TIFF:                        /usr/lib64/libtiff.so (ver 42 - 3.9.4)
--     JPEG 2000:                   /usr/lib64/libjasper.so (ver 1.900.1)
--     OpenEXR:                     /usr/lib64/libImath.so /usr/lib64/libIlmImf.so /usr/lib64/libIex.so /usr/lib64/libHalf.so /usr/lib64/libIlmThread.so (ver 1.6.1)
-- 
--   Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  NO
--     FFMPEG:                      YES
--       codec:                     YES (ver 54.23.100)
--       format:                    YES (ver 54.6.100)
--       util:                      YES (ver 51.54.100)
--       swscale:                   YES (ver 2.1.100)
--       gentoo-style:              YES
--     GStreamer:                   
--       base:                      YES (ver 0.10.30)
--       app:                       YES (ver 0.10.30)
--       video:                     YES (ver 0.10.30)
--     OpenNI:                      NO
--     OpenNI PrimeSensor Modules:  NO
--     PvAPI:                       NO
--     UniCap:                      NO
--     UniCap ucil:                 NO
--     V4L/V4L2:                    Using libv4l (ver 0.8.8)
--     Xine:                        NO
-- 
--   Other third-party libraries:
--     Use IPP:                     NO
--     Use TBB:                     YES (ver 3.0 interface 5000)
--     Use Cuda:                    YES (ver 4.2)
--     Use Eigen:                   YES (ver 2.0.15)
-- 
--   NVIDIA CUDA:                   (ver 4.2)
--     Use CUFFT:                   YES
--     Use CUBLAS:                  NO
--     NVIDIA GPU arch:             11 12 13 20 21 30
--     NVIDIA PTX archs:            11 12 13 20 21 30
--     NVIDIA GPU features:         11 12 13 20 20 30 20
-- 
--   Python:
--     Interpreter:                 /usr/bin/python (ver 2.6.6)
--     Libraries:                   /usr/lib64/libpython2.6.so (ver 2.6.6)
--     numpy:                       /usr/local/lib/python2.6/dist-packages/numpy/core/include (ver 2.0.0.dev-27befc8)
--     packages path:               lib/python2.6/dist-packages
-- 
--   Documentation:
--     Build Documentation:         NO
--     Sphinx:                      NO
--     PdfLaTeX compiler:           /usr/local/texlive/2011/bin/x86_64-linux/pdflatex
-- 
--   Tests and samples:
--     Tests:                       YES
--     Performance tests:           YES
--     Examples:                    YES
-- 
--   Install path:                  /usr/local
-- 
--   cvconfig.h is in:              /data/OpenCV-2.4.1/build
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /data/OpenCV-2.4.1/build

猜猜缺少了什么?

【问题讨论】:

  • sudo apt-get install libgtkglext1 libgtkglext1-dev
  • @AndreyKamaev 你就是男人!干杯!如果您将其发布为答案,我会立即接受。
  • @AndreyKamaev 你能发表你的评论作为答案吗?我想回答这个问题。

标签: opengl opencv compilation cmake


【解决方案1】:
cmake -D:WITH_OPENGL=ON

丹的评论。在 openCV 2.4.6 上

【讨论】:

    【解决方案2】:

    如果安装了 OpenGL:

    apt-get install libgl1-mesa-dev libglu1-mesa-dev libqt4-opengl-dev
    

    CMake 仍然找不到 OpenGL,则说明 /usr/lib/x86_64-linux-gnu/ 中没有 libGl.so。如果 /usr/lib/x86_64-linux-gnu/mesa/ 中有 libGl.so,那么这是缺少软链接的情况。只需重新安装软件包即可重新建立该链接。

    apt-get install --reinstall libgl1-mesa-dev libglu1-mesa-dev libqt4-opengl-dev
    

    请注意,我必须安装libqt4-opengl-dev,即使我不关心 OpenCV 中的 Qt 支持或其他任何地方的 Qt 支持。我试图弄清楚为什么需要大量 80MB 或下载和安装才能使常规 OpenGL 正常工作,但这种方法在 Ubuntu 13.10 中确实有效。

    【讨论】:

    【解决方案3】:

    我有同样的问题,我通过添加一个额外的命令 (WITH_QT=ON) 来资助一个解决方案。我不知道为什么,但我在互联网上发现,如果不启用 QT 而不是 GTK,则无法启用 OPENGL。我希望这对我们有所帮助,我为我的英语感到抱歉(我不太懂,因为我说西班牙语)。

    Saludos 同志!德斯德墨西哥:D

    【讨论】:

    • 有一种方法可以在不使用 QT 的情况下使用 GTK+ 2.0 启用 OpenGL。见stackoverflow.com/questions/33801083/…
    • 在 Ubuntu 20.02 上安装 libqt5opengl5-dev 并使用标志 WITH_QT=ON 我终于在制作中启用了 OpenGL。谢谢。
    • 这在我已经安装了ibgtkglext1libgtkglext1-dev 的Ubuntu 18.04 Docker 映像中也适用。谢谢@angel-xipootle!
    【解决方案4】:

    使用选项运行 cmake:

    cmake -DWITH_OPENGL=ON <your CMakeLists.txt directory>
    

    cmake -DUSE_OPENGL=ON <your CMakeLists.txt directory>
    

    【讨论】:

    • 不起作用。 cmake 需要像“VAR:type=value”这样的表达式。如果我在命令行参数中使用 -DWITH_OPENGL 或 -DUSE_OPENGL 解析错误运行它: -D 应该是: VAR:type=value CMake 错误:没有提供 cmake 脚本。 CMake 错误:处理参数时出现问题
    • 我认为正确的方法应该是 -D WITH_OPENGL=ON 但我已经这样做了,但没有运气。
    • 如果你在 linux 上运行,你可以安装 ccmake 并轻松添加 WITH_OPENGL 选项。
    【解决方案5】:

    我无法在我的 openCV 2.4.3 CMake 选项中显示 WITH_OPENGL 标志(我在 Mac 上运行 - Snow Leopard 10.6.8)...我终于通过打开 CMakeLists 让它工作了。 txt 并将第 128 行编辑为:

    OCV_OPTION(WITH_OPENGL "Include OpenGL support" ON)

    然后运行您的 CMake 配置器/生成器,它应该会构建。

    【讨论】:

    • 这不是在 OSX 10.8 上构建的,因为在 modules/highgui/src/window_QT.cpp 中引用了 glXUseXFont。但是,如果我简单地注释掉这一行,项目将构建(在编辑 Amir Rubin 指示的 CMakeList.txt 文件之后)。如果删除此行会导致任何问题,我正在测试中。到目前为止一切顺利。
    • @AngusForbes Ha - 我也发生了同样的事情;我忘了在我的回复中提到它。我没有遇到任何注释掉该行的问题:code.opencv.org/issues/1603
    • 在当前版本的根 CMake 中,现在是第 143 行。我在那里尝试过,CMake 仍然说 OpenGL support 在 Ubuntu 13.10 x64 中是 NO。
    【解决方案6】:

    您可能忘记安装 GTK+ OpenGL Extensions 及其标题

    sudo apt-get install libgtkglext1 libgtkglext1-dev
    

    【讨论】:

    • 这似乎是答案,但这是@AndreyKamaev 在他的评论中首先提出的:)
    • 好吧,正如@RuiMarques 所说,Andrey 在评论中已经回答了这个问题,但我会将此答案视为正确答案,因为我不能接受评论,我想结束这个问题。
    • 不确定这是正确的答案。安装它会使 CMake 找到 GtkGlExt(OpenGL 正上方的行),但 OpenGL support 仍然是 NO。
    猜你喜欢
    • 2012-06-19
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2015-03-16
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多