2013-05-10 183 views
3

我居然遇到了下列OpenCV的樣品麻煩:在opencv2.4.5使用createButton(Qt的GUI功能)段錯誤

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

(我更新的路徑爲我的ENV &添加的回調函數不在樣本中)。

我編譯opencv的設置的Qt在:

 

GUI: 
--  QT 4.x:      YES (ver 4.8.2 EDITION = OpenSource) 
--  QT OpenGL support:   NO 
--  OpenGL support:    NO 

當我嘗試我在Qt的文檔中發現的代碼:我有以下回溯:

 
(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; 
} 

回答

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創建你的windows。

+0

我已經嘗試CV_GUI_EXPANDED沒有效果...感謝您的建議。 – Poko 2013-06-10 10:42:05

0

我也無法用OpenCV 2.4.5/Qt 4.8.0創建按鈕。我下載了OpenCV 2.4.9,並在相同的設置下安裝它,現在它可以工作。