在 LMDE2 (Debian 8.2) 上使用 OpenGL 和 GTK 构建 OpenCV 3.0

Build OpenCV 3.0 with OpenGL and GTK on LMDE2 (Debian 8.2)

我用 cmake -DWITH_OPENGL=ON .. 构建了 opencv,但是 cmake 的输出告诉我支持的 OpenGL 是 NO.

而且我检查了 cmake 缓存以确保 WITH_OPENGLON

使用的GUI是GTK+ 3.0,安装了libgtkglext1-dev

看完cmake脚本后cmake/OpenCVFindLibsGUI.cmake,找到了相关的cmake代码:

# --- GTK ---
ocv_clear_vars(HAVE_GTK HAVE_GTK3 HAVE_GTHREAD HAVE_GTKGLEXT)
if(WITH_GTK AND NOT HAVE_QT)
  # ...
  if(WITH_OPENGL AND NOT HAVE_GTK3)
    CHECK_MODULE(gtkglext-1.0 HAVE_GTKGLEXT) # MARK1
  endif()
endif()

# --- OpenGl ---
ocv_clear_vars(HAVE_OPENGL HAVE_QT_OPENGL)
if(WITH_OPENGL)
  if(WITH_WIN32UI OR (HAVE_QT AND QT_QTOPENGL_FOUND) OR HAVE_GTKGLEXT) # MARK2
    find_package (OpenGL QUIET)
  # ...
  endif ()
endif(WITH_OPENGL)

因为我使用的是GTK+ 3.0,所以MARK1标记的语句不会执行,那么MARK2标记的条件为假。所以不会加载OpenGL包。

我也试过在HAVE_GTK3为真时强制调用CHECK_MODULE(gtkglext-1.0 HAVE_GTKGLEXT),最后发现编译编译出错。

所以我更新我的构建命令如下

cmake -DWITH_OPENGL=ON -DWITH_GTK_2_X=ON ..

启用 WITH_GTK_2_X 后,将强制使用 gtk2 而不是 gtk3。