0

今まで私は1つのことを学びました.OpenCVでやっていることが間違っています.Qtはエラーに何の役割もありません.

異なるスレッドで 2 つのメソッドを実行しようとしていますが、エラーが発生します。

[xcb] デキュー中にキューに不明なリクエストがありました
[xcb] おそらくこれはマルチスレッド クライアントであり、XInitThreads は呼び出されていません
[xcb] 中止します。申し訳ありません。
Blurring_Images: ../../src/xcb_io.c:178: dequeue_pending_request: アサーション `!xcb_xlib_unknown_req_in_deq' が失敗しました。
プログラムが予期せず終了しました。


これが私のコードです:

void Dialog::blurImages(int b)
{
    QtConcurrent::run(this,&Dialog::homogenour_blur,b);
    QtConcurrent::run(this,&Dialog::gaussianBlur,b);
}

void Dialog::homogenour_blur(int b)
{
    cv::blur(img,img1,cv::Size(b,b));
    showImage("Homogenous Blur",img1);
}

void Dialog::gaussianBlur(int b)
{
    cv::GaussianBlur(img,img2,cv::Size(b,b),b);
    showImage("Gaussian Blur",img2);
}

一方、1つの呼び出しをコメントアウトすると(以下に表示)、正常に実行されます

void Dialog::blurImages(int b)
{
    QtConcurrent::run(this,&Dialog::homogenour_blur,b);
    //QtConcurrent::run(this,&Dialog::gaussianBlur,b);
}

本当に迷惑です、助けてください!!

編集: showImage() を呼び出す代わりに、実際の OpenCV 呼び出しに置き換えました (以下を参照)。

void Dialog::homogenour_blur(int b)
{
    cv::blur(img,img1,cv::Size(b,b));
    //showImage("Homogenous Blur",img1);
    cv::imshow("Homogenous Blur",img1);
}

void Dialog::gaussianBlur(int b)
{
    cv::GaussianBlur(img,img2,cv::Size(b,b),b);
    //showImage("Gaussian Blur",img2);
    cv::imshow("Gaussian Blur",img2);
}

今私が得るエラーは次のとおりです。

元の画像: X サーバー :0 で致命的な IO エラー 11 (リソースが一時的に利用できません)。
元の画像: X サーバー :0 で致命的な IO エラー 0 (成功)。
致命的なエラー: 破棄後にグローバルな静的 'KGlobalSettings *s_self()' にアクセスしました。../../kdeui/kernel/kglobalsettings.cpp:190 で定義されています
プログラムが予期せず終了しました。

4

3 に答える 3

10

関係者各位:

Jaydeep の問題を修正

[xcb] デキュー中にキューにある不明なリクエスト

[xcb] これはおそらくマルチスレッド クライアントであり、XInitThreads は呼び出されていません

[xcb] 中止、申し訳ありません。

エラー: 'XInitThreads' はこのスコープで宣言されていません

xlib を含む X11 をリンクし、XInitThreads を呼び出します。

xlib をインクルードして XInitThreads を呼び出す例:

// main.cpp
#include <thread> 
#include <X11/Xlib.h>

int main() {
   XInitThreads();
   // . . . 
}

リンクの例:

g++ main.cpp -o my_program -std=c++0x -pthread -lX11 /* -pthread if you're on Linux */

もちろん、アプリケーションに必要な他のファイルをリンクすることを忘れないでください

于 2013-05-16T01:21:17.390 に答える
-6

スレッドを閉じました。

なぜ問題が発生したのかわかりませんが、修正されました..

RAさんありがとうございます。大きな関心を示してくれて:)

于 2012-07-17T00:38:20.317 に答える