C++ 是否可以删除OpenCV中的轨迹栏?

C++ 是否可以删除OpenCV中的轨迹栏?,c++,opencv,trackbar,C++,Opencv,Trackbar,我想做一个菜单轨迹栏,它可以改变用户想要改变的参数。因此,如果设置为“1”,则会出现模糊轨迹栏,我们可以模糊图片,如果设置为“2”,则会出现ALPHA和BETA轨迹栏,我们可以更改亮度和对比度,但模糊轨迹栏仍然可见,我们也可以更改模糊,我希望仅当菜单轨迹栏的值为1时才能看到它。我试着用“如果”、“切换”甚至“while”来做,但它们都不起作用。这可能与擦除其他轨迹栏在确切的条件下是可能的,但我还没有找到这样做的功能。或者你知道如何显示精确的轨迹栏吗 以下是代码(.cpp)的一部分: #包括 #包

我想做一个菜单轨迹栏,它可以改变用户想要改变的参数。因此,如果设置为“1”,则会出现模糊轨迹栏,我们可以模糊图片,如果设置为“2”,则会出现ALPHA和BETA轨迹栏,我们可以更改亮度和对比度,但模糊轨迹栏仍然可见,我们也可以更改模糊,我希望仅当菜单轨迹栏的值为1时才能看到它。我试着用“如果”、“切换”甚至“while”来做,但它们都不起作用。这可能与擦除其他轨迹栏在确切的条件下是可能的,但我还没有找到这样做的功能。或者你知道如何显示精确的轨迹栏吗

以下是代码(.cpp)的一部分:

#包括
#包括
使用名称空间cv;
常量int滑块_max=100,滑块2_max=100,滑块3_max=100,滑块5_max=2;
int slider=0,slider2=0,slider3=0,slider5=0;
(...)
void transf(int,void*)
{
(...)
如果(滑块5==0)
{
setTrackbarPos(ALPHA,name3,0);
setTrackbarPos(BETA,name3,0);
setTrackbarPos(模糊,名称3,0);
imshow(名称,之前);
}
如果(滑块5==1)
{
setTrackbarPos(ALPHA,name3,0);
setTrackbarPos(BETA,name3,0);
createTrackbar(模糊、命名3和滑块、滑块最大值、模糊);
模糊(0,0);
}
如果(滑块5==2)
{
setTrackbarPos(模糊,名称3,0);
createTrackbar(ALPHA、name3和slider2、slider2_max+100、contrBright);
createTrackbar(BETA、name3和slider3、slider3_max、contrBright);
康布莱特(0,0);
}
}
int main()
{
(...)
createTrackbar(菜单、名称和slider5、slider5_max、transf);
transf(0,0);
等待键(0);
返回0;
}

目前还无法销毁您在openCV中创建的轨迹栏。而且没有办法只显示给定的轨迹栏

创建轨迹栏后,它将按创建顺序显示在放置轨迹栏的窗口底部

也许你可以打电话:

destroyWindow(winname);
namedWindow(winname, FLAGS);
createTrackbar(trackname, winname, &pos, maxBound, callBack);
imshow(winname, img);
每次需要删除并创建新的轨迹栏时。它会破坏窗户和与之相连的轨迹栏。然后使用新的轨迹栏创建一个新窗口

希望这能有所帮助

祝你好运

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