2014-12-28 3 views
1

사용자가 변경하려는 매개 변수를 변경하는 MENU 트랙 바를 만들고 싶습니다. 따라서 "1"로 설정하면 BLUR 트랙 바가 나타나고 사진을 흐리게 할 수 있습니다. "2"이면 ALPHA 및 BETA 트랙 바가 나타나고 밝기와 대비는 바꿀 수 있지만 BLUR 트랙 바는 여전히 보이며 흐리게 표시 할 수 있습니다. 물론 MENU 트랙바의 값이 1 일 때만 표시되기를 원합니다. 'if', 'switch'및 'while'으로도 시도했지만 작동하지 않습니다. 정확한 조건에서 다른 트랙 바를 지우는 것이 가능할 수도 있지만 기능을 찾지 못했습니다. 또는 정확한 아이디어를 정확하게 트랙바를 표시하는 방법? 아직 OpenCV의에서 만든 트랙 바을 파괴 할 수있는 방법이OpenCV에서 트랙 바를 삭제할 수 있습니까?

#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

없습니다 : 여기

코드 (통화 당)의 일부입니다. 그리고 주어진 트랙 바를 보여줄 방법이 없습니다.

트랙바를 만든 후에는 배치 한 창의 아래쪽에 트랙 바가 생성 순서대로 나타납니다.

어쩌면 당신은 호출하여 관리 할 수 ​​:

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

삭제하고 새로운 트랙 바을 만들 필요가 때마다. 창과 창에 붙어있는 트랙 바를 파괴합니다. 그런 다음 새 트랙바가있는 새 창을 만드십시오.

희망이 도움이 될 것입니다.

행운을 빌어 요.