2014-12-28 2 views
1

Я хочу создать трекбол МЕНЮ, который изменит параметр, который пользователь хочет изменить. Поэтому, если он установлен на «1», появляется трек-полосок BLUR, и мы можем размыть изображение, если «2» появляются дорожки треков ALPHA и BETA, и мы можем изменить яркость и контрастность, но трек-панель BLUR по-прежнему видна, и мы можем изменить размытие как ну, и я хочу, чтобы это было видно только тогда, когда значение трекбана МЕНЮ равно 1. Я пытался сделать это с помощью «if», «switch» и даже «while», но они не работают. Это может быть возможно при удалении других трекбаров в точном состоянии, но я не нашел функцию, которая это делает. Или какие-либо идеи, как показать только точный трекбар?Можно ли удалить трекбар в OpenCV?

Вот часть кода (.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; 
} 

ответ

2

Там нет никакого способа, чтобы уничтожить TrackBar вы создали в OpenCV еще. И нет способа показать только данный трек-лист.

Как только вы создали трекбор, он появится в порядке создания в нижней части окна, в которое вы их разместили.

Может быть, вы могли бы управлять по телефону:

destroyWindow(winname); 
namedWindow(winname, FLAGS); 
createTrackbar(trackname, winname, &pos, maxBound, callBack); 
imshow(winname, img); 

Каждый раз, когда вы должны удалить и создать новый TrackBar. Это разрушит окно и трек-панели, прикрепленные к нему. Затем создайте новое окно с новыми трекболами.

Надеюсь, это поможет.

Удача

Смежные вопросы