【问题标题】:Is it possible to delete trackbar in OpenCV?是否可以删除 OpenCV 中的轨迹栏?
【发布时间】:2014-12-28 19:56:57
【问题描述】:

我想制作一个 MENU 轨迹栏来更改用户想要更改的参数。因此,如果设置为“1”,则出现 BLUR 轨迹条,我们可以模糊图片,如果“2”出现 ALPHA 和 BETA 轨迹条,我们可以更改亮度和对比度,但 BLUR 轨迹条仍然可见,我们可以将模糊更改为好吧,我希望它仅在 MENU 轨迹栏的值为 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;
 }

【问题讨论】:

    标签: c++ opencv trackbar


    【解决方案1】:

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

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

    也许你可以通过调用来管理:

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

    每次您需要删除和创建新的轨迹栏。它将破坏窗口和附加到它的轨迹栏。然后使用新的轨迹栏创建一个新窗口。

    希望这会有所帮助。

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多