Gtk-WARNING **: gtk_disable_setlocale() 必须在 gtk_init() 之前调用
Posted
技术标签:
【中文标题】Gtk-WARNING **: gtk_disable_setlocale() 必须在 gtk_init() 之前调用【英文标题】:Gtk-WARNING **: gtk_disable_setlocale() must be called before gtk_init() 【发布时间】:2013-04-25 12:41:17 【问题描述】:每当我将 OpenCV 的 cv::imshow
与 Qt 的 QApplication
一起使用时,我都会收到此错误:
Gtk-WARNING **: gtk_disable_setlocale() must be called before gtk_init()
我进行了一些搜索,最终阅读了越来越多关于我不完全理解的内容,但对 OpenCV 和 GTK+ 的连接方式有所了解。而且由于警告显然是在某事之前调用某事的指令,因此我包括了gtk.h
并调用了gtk_disable_setlocale()
,但最终出现了更多错误。
尽管有警告,但我的代码运行没有任何问题,但它真的让我很烦!我假设在警告背后,程序员应该理解一些基本的东西。所以也许有人可以用高级新手可以理解的方式解释整个事情? ;)
编辑:
我正在使用 ubuntu 12.10、OpenCV 2.4、GTK 2.24.13 和 qmake -v
告诉我
QMake version 2.01a
Using Qt version 4.8.3 in /usr/lib/x86_64-linux-gnu
【问题讨论】:
你在 Linux 上运行吗?哪个发行版? 我可以确认 opencv/qt/gtk 之间的冲突在 Ubuntu 14.04 中仍然存在。如果您的程序的其他部分正在使用 qt,它似乎会破坏 imshow。 【参考方案1】:如果你打算使用 Qt 窗口系统,最好避免在 Qt 窗口旁边创建 OpenCV 窗口。
将IplImage
或cv::Mat
转换为QImage
并将其绘制在Qt 窗口上。 Check cvImage,一个简单的 Qt/OpenCV 示例,它在 Qt 窗口上显示加载了 OpenCV 的图像,并且还显示了基于鼠标坐标的像素的 RGB 值。
【讨论】:
我确实将cv::Mat
s 转换为QImage
s 以显示最终结果。只是cv::imshow()
派上用场了,当我需要查看一些中间结果时。我只是想了解警告的含义。
cv::imshow()
在你背后做了很多可能导致冲突的事情。我想真正理解它的唯一方法是调试应用程序,看看它会把你带到哪里。以上是关于Gtk-WARNING **: gtk_disable_setlocale() 必须在 gtk_init() 之前调用的主要内容,如果未能解决你的问题,请参考以下文章
Gtk-WARNING **: gtk_disable_setlocale() 必须在 gtk_init() 之前调用
“Gtk-WARNING **:无法打开显示:”在 Eclipse 中运行 gtkmm 项目时
Gtk-WARNING **: C 库不支持区域设置。同时使用多个 Python 模块(mayavi、spectral)
Gtk-WARNING **: cannot open display: :0.0之解决
Java 应用程序抛出`Gtk-WARNING **: cannot open display:` 即使不需要 xserver
我该如何解决这个错误? Gtk-WARNING **: GModule ...初始化检查失败:GLib 版本太旧(微不匹配)