2

現在、画像の値を変更するために使用されるスライダーがいくつかあります。スライダーには、スライダーごとに異なる関数へのコールバックを持つ OpenCV トラック バーを使用しています。スライダー コールバックが単一のコールバック関数を指すようにし、ユーザー データを使用してどのトラック バーが呼び出しを行ったかを識別したいと考えています。

ここにトラックバーのドキュメントがあります

void* に渡す値と、コールバック関数からこの値を取得する方法がわかりません。以下は、コンパイルされたトラック バーの例です。

int ref = 1;
createTrackbar("Name","Window",0, 1, myFunc, &ref);

私のコールバック関数では、ref の値を取得しようとしています。

void myFunc(int value, void *userdata)
{
    int val = *((int*)&userdata);
    cout << val << endl;
}

ポインターを int に変換しようとして問題が発生しました。これはオンラインで見つけた解決策であり、ref のアドレスとして val が返されます。

int val = *((int*)&userdata);

val のアドレスから値を取得する必要があるため、これは非常に面倒なようです。これを行う簡単な方法はありますか?

4

2 に答える 2

1

いいえ、これ以上簡単な方法はありません。必要な機能には最低限必要です。

于 2013-10-28T15:43:27.257 に答える