Я хочу сделать трекбар MENU, который изменяет параметр, который пользователь хочет изменить. Поэтому, если он установлен на «1», появляется трек-панель BLUR, и мы можем размыть изображение, если «2» появляются трекбары ALPHA и BETA, и мы можем изменить яркость и контрастность, но трек-бар BLUR все еще виден, и мы можем изменить размытие как ну, и я хочу, чтобы это было видно только тогда, когда значение трекбара МЕНЮ равно 1. Я пытался сделать это с помощью ‘if’, ‘switch’ и даже ‘while’, но они не работают. Это может быть возможно при стирании других трекбаров в точном состоянии, но я не нашел функцию, которая делает это. Или есть идеи, как показать только точный трекбар?
Вот часть кода (.cpp):
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;const int slider_max = 100, slider2_max = 100, slider3_max = 100, slider5_max = 2;
int slider = 0, slider2 = 0, slider3 = 0, slider5 = 0;
(...)
void transf(int, void*)
{
(...)
if (slider5 == 0)
{
setTrackbarPos(ALPHA, name3, 0);
setTrackbarPos(BETA, name3, 0);
setTrackbarPos(BLUR, name3, 0);
imshow(name, before);
}
if (slider5 == 1)
{
setTrackbarPos(ALPHA, name3, 0);
setTrackbarPos(BETA, name3, 0);
createTrackbar(BLUR, name3, &slider, slider_max, blur);
blur(0,0);
}
if (slider5 == 2)
{
setTrackbarPos(BLUR, name3, 0);
createTrackbar(ALPHA, name3, &slider2, slider2_max+100, contrBright);
createTrackbar(BETA, name3, &slider3, slider3_max, contrBright);
contrBright(0,0);
}
}
int main()
{
(...)
createTrackbar(MENU, name, &slider5, slider5_max, transf);
transf(0,0);
waitKey(0);
return 0;
}
Нет никакого способа уничтожить трекбар, который вы создали в openCV. И нет способа показать только данный трекбар.
После того как вы создали трекбар, он появится в порядке создания внизу окна, в котором вы его разместили.
Может быть, вы могли бы позвонить:
destroyWindow(winname);
namedWindow(winname, FLAGS);
createTrackbar(trackname, winname, &pos, maxBound, callBack);
imshow(winname, img);
Каждый раз вам нужно удалить и создать новый трекбар. Это разрушит окно и прикрепленные к нему трекбары. Затем создайте новое окно с новыми трекбарами.
Надеюсь, что это поможет.
Удачи