実際、次の OpenCV サンプルで問題が発生しています。
http://docs.opencv.org/2.4.5/modules/highgui/doc/qt_new_functions.html
(env のパスを更新し、サンプルにないコールバック関数を追加しました)。
Opencv設定Qt Onをコンパイルしました:
GUI: -- QT 4.x: はい (ver 4.8.2 EDITION = オープンソース) -- QT OpenGL サポート: いいえ -- OpenGL のサポート: いいえ
Qt doc で見つけたコードを試すと、次のバックトレースがあります。
(gdb) バックトレース #0 0x00007ffff14f53e8 in QAction::setEnabled(bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4 #1 /usr/local/lib/libopencv_highgui.so.2.4 からの GuiReceiver::enablePropertiesButtonEachWindow() () の 0x00007ffff67bf0db #2 /usr/local/lib/libopencv_highgui.so.2.4 からの GuiReceiver::addButton(QString, int, int, void*, void*) () の 0x00007ffff67c02db #3 /usr/local/lib/libopencv_highgui.so.2.4 からの GuiReceiver::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) () の 0x00007ffff67c5e9a #4 0x00007ffff0fcef77 in 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 QMetaObject::invokeMethod の 0x00007ffff0fd134c(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 /usr/local/lib/libopencv_highgui.so.2.4 からの cvCreateButton () の 0x00007ffff67b23a7 #7 メインの 0x0000000000400f6c (argc=, argv=) at main.cpp:20
誰でも同じ問題を抱えていますか? Opencv を Qt に埋め込みたくはなく、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;
}