3

実際、次の 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;
}
4

2 に答える 2

0

また、OpenCV 2.4.5 / Qt 4.8.0 でボタンを作成できませんでした。OpenCV 2.4.9 をダウンロードして同じ設定でインストールしたところ、動作するようになりました。

于 2014-06-25T00:08:51.130 に答える