我会在使用 Gtkmm 图形界面的程序中使用 OpenCV 库,但是当我尝试使用 cv::imread 打开图像时,执行期间出现错误消息:gtk-error ** Using gtk+ 2.x and gtk+ 3不支持在同一进程中。
这是一个非常简单的示例代码:
#include <gtkmm/main.h>
#include <gtkmm/window.h>
#include <gtkmm/image.h>
#include "opencv2/highgui/highgui.hpp"
int main(int argc, char* argv[]) {
Gtk::Main app(argc, argv);
Gtk::Image ImgGtk;
Gtk::Window Win0;
cv::Mat ImgOcv;
Win0.set_border_width(5);
Win0.set_default_size(250, 100);
ImgOcv= cv::imread("icone.png", -1);
ImgGtk.set("icone.png");
Win0.add(ImgGtk);
Win0.show_all();
Gtk::Main::run(Win0);
return 0;
}
这个想法是替换“ImgGtk.set("icone.png");” 通过 create_from_data 和 gtk_img.set(pixbuf) 或类似的东西。上面的代码编译和链接很好,但在执行过程中会产生上述错误。只需删除第 17 行 (ImgOcv= cv::imread("icone.png", -1);) 并且错误消失,图像由 ImgGtk.set("icone.png"); 显示。
有人听说过这种冲突吗?有人知道如何调试吗?
我正在使用 gtkmm 3.0 并将 opencv 升级到 2.4.5,但这并没有解决问题。操作系统是 Ubuntu 12.04。
提前谢谢你。