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

Yan*_*Xie 0 gtk opengl opencv3.0

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

而且我已经检查了cmake缓存以确保WITH_OPENGLis是ON

使用的GUI是GTK + 3.0,并且已安装libgtkglext1-dev

Yan*_*Xie 5

阅读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)
Run Code Online (Sandbox Code Playgroud)

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

我也曾试图强制调用,CHECK_MODULE(gtkglext-1.0 HAVE_GTKGLEXT)即使HAVE_GTK3为true 时也是如此,但最后发现编译错误。

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

cmake -DWITH_OPENGL=ON -DWITH_GTK_2_X=ON ..
Run Code Online (Sandbox Code Playgroud)

随着WITH_GTK_2_X被设置时,GTK2是用来代替gtk3力。