我实际上在使用以下 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;
}