Как передать данные пользователя с помощью трекбара OpenCV

В настоящее время у меня есть несколько ползунков, которые используются для изменения значений изображения. Я использую трек-бар 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, это решение я нашел в Интернете, которое дает мне val в качестве адреса ref.

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

Это кажется большой проблемой, так как тогда я должен получить значение обратно с адреса в val. Есть ли более простой способ сделать это?

1

Решение

Нет, более простого способа нет. Это необходимый минимум для функциональности, которую вы хотите.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]