2013-10-28 12 views
1

目前我有許多用於更改圖像值的滑塊。我正在使用滑塊的OpenCV軌跡欄,它爲我的每個滑塊調用了不同的函數。我想將我的滑塊回調點指向單個回調函數,然後使用用戶數據來確定哪個跟蹤欄發起了呼叫。如何使用OpenCV trackbar傳遞用戶數據

Here is the documentation for the track bar

我不能確定什麼樣的價值觀我應該傳遞到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的問題,這是一個解決方案,我在網上找到這給了我VAL作爲參考的地址。

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

這似乎很麻煩,因爲我然後必須從val處獲取值的地址。有沒有更簡單的方法來做到這一點?

+0

不應該是'int val = *((int *)userdata)'? – Bull

+0

返回值而不是地址是。我只想知道是否有更好的方式發送用戶數據。 –

回答

1

不,沒有更簡單的方法。這對於你想要的功能而言是最小的。

+0

如果是這樣的話,我會保持它原樣。 –