我实际上遇到了以下OpenCV示例的问题:
http://docs.opencv.org/2.4.5/modules/highgui/doc/qt_new_functions.html
(我更新了env&的路径,添加了样本中没有的回调函数。)
我编译了Opencv设置Qt On:
GUI: -- QT 4.x: YES (ver 4.8.2 EDITION = OpenSource) -- QT OpenGL support: NO -- OpenGL support: NO
当我尝试在Qt doc中找到的代码时:我有以下回溯:
(gdb) backtrace #0 0x00007ffff14f53e8 in QAction::setEnabled(bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4 #1 0x00007ffff67bf0db in GuiReceiver::enablePropertiesButtonEachWindow() () from /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**) () from /usr/local/lib/libopencv_highgui.so.2.4 #4 0x00007ffff0fcef77 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4 #5 0x00007ffff0fd134c in QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) () from /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功能。
我在这里找到了答案的开头: How to use cv::createButton prototype in OpenCV
但这不相关......
感谢您的帮助。
仍有一些问题,有一段代码:
#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;
}
答案 0 :(得分:1)
我无法确认或拒绝这个问题是真的,因为我的机器上有不同的设置(OpenCV 2.4.9和Qt 5.0.2)。
但我发现创建一个CV_GUI_NORMAL
窗口会导致应用程序崩溃。文档说明:
CV_GUI_NORMAL 或 CV_GUI_EXPANDED :CV_GUI_NORMAL是绘制没有状态栏和工具栏的窗口的旧方法,而CV_GUI_EXPANDED是新的增强GUI。
我建议您暂时使用CV_GUI_EXPANDED
创建窗口。
答案 1 :(得分:0)
我也无法使用OpenCV 2.4.5 / Qt 4.8.0创建一个按钮。我下载了OpenCV 2.4.9并在相同的设置下安装它,现在它可以工作。