3

我实际上在使用以下 OpenCV 示例时遇到了问题:

http://docs.opencv.org/2.4.5/modules/highgui/doc/qt_new_functions.html

(我更新了我的环境的路径并添加了示例中没有的回调函数)。

我编译了 Opencv 设置 Qt On:

 图形用户界面:
-- QT 4.x:是(版本 4.8.2 版本 = 开源)
-- QT OpenGL 支持:否
-- OpenGL 支持:否

当我尝试在 Qt doc 中找到的代码时:我有以下回溯:

(gdb) 回溯
#0 0x00007ffff14f53e8 in QAction::setEnabled(bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#1 0x00007ffff67bf0db in GuiReceiver::enablePropertiesButtonEachWindow() () 来自 /usr/local/lib/libopencv_highgui.so.2.4
#2 0x00007ffff67c02db in GuiReceiver::addButton(QString, int, int, void*, void*) () from /usr/local/lib/libopencv_highgui.so.2.4
#3 0x00007ffff67c5e9a in GuiReceiver::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) () 来自 /usr/local/lib/libopencv_highgui.so.2.4
#4 0x00007ffff0fcef77 在 QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const ()
   来自 /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#5 0x00007ffff0fd134c 在 QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument)
    () 来自 /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#6 0x00007ffff67b23a7 in cvCreateButton() from /usr/local/lib/libopencv_highgui.so.2.4
#7 0x0000000000400f6c in main (argc=, argv=) at main.cpp:20

有人有同样的问题吗?我只是想明确一点,我不想在 Qt 中嵌入 Opencv,而只是使用 opencv 提供的 Qt 功能。

我在这里找到了答案的开始: 如何在 OpenCV 中使用 cv::createButton 原型

但这无关紧要……

谢谢你的帮助。

仍然有一些问题有一段代码:

#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

void callbackButton(int state, void* userdata){}

int main(int ac, char **av){

     namedWindow("main1",CV_WINDOW_NORMAL);
     namedWindow("main2",CV_WINDOW_AUTOSIZE | CV_GUI_NORMAL);
     int a = 0;

     createButton("test",callbackButton, &a, CV_CHECKBOX,1);
     return 0;
}
4

2 回答 2

1

不能确认也不能否认这个问题是真实的,因为我的机器上有不同的设置(OpenCV 2.4.9 和 Qt 5.0.2)。

但我发现创建一个窗口CV_GUI_NORMAL会使应用程序崩溃。文档指出:

CV_GUI_NORMALCV_GUI_EXPANDED:CV_GUI_NORMAL 是绘制没有状态栏和工具栏的窗口的旧方法,而 CV_GUI_EXPANDED 是新的增强 GUI。

CV_GUI_EXPANDED我建议你暂时用它来创建你的窗口。

于 2013-06-08T05:04:37.110 回答
0

我也无法使用 OpenCV 2.4.5 / Qt 4.8.0 创建按钮。我下载了 OpenCV 2.4.9 并在相同的设置下安装它,现在它可以工作了。

于 2014-06-25T00:08:51.130 回答