【问题标题】:How could I change the order of trackbars in OpenCV?如何更改 OpenCV 中轨迹栏的顺序?
【发布时间】:2013-12-04 01:00:43
【问题描述】:

通过使用 cvCreateTrackbar(),我创建了一些 trackbars,但是这些 trackbars 是无序的。而且我在 OpenCV 中找不到任何函数来更改顺序。

那么...如何更改 OpenCV 中轨迹栏的顺序?

(请原谅我糟糕的英语。)

在我的程序中,窗口上轨迹栏的顺序似乎与我的源代码中的不同。

在我的源代码中:

亮度

对比

灰色

灰色 R 百分比

灰色 G 百分比

灰色 B 百分比

温度

色调

饱和度

均衡

在窗户上:

灰色 G 百分比

对比

均衡

亮度

灰色

灰色 G 百分比

灰色 R 百分比

温度

色调

饱和度

【问题讨论】:

    标签: opencv user-interface trackbar


    【解决方案1】:

    在 el capitan (os x) 中的 python 2.7 下的 open CV 2.4.12 中,源中的顺序对显示的顺序没有影响。名字也有影响。我尝试了各种名称,但无法找出模式。我有完全相同的问题。

    #Lower Saturation
    cv2.createTrackbar(color.satName[0], 'SAT+', color.sat[0], abs(color.sat[1]-color.sat[0]), adjust)
    
    #Upper Hue
    cv2.createTrackbar(color.hueName[1], 'HUE+', upperHue, abs(color.hue[1]-color.hue[0]), adjust)    
    #Lower Hue
    cv2.createTrackbar(color.hueName[0], 'HUE-', lowerHue, abs(color.hue[1]-color.hue[0]), adjust)
    
    #Lower Value
    cv2.createTrackbar(color.valName[0], 'VAL-', color.val[0], abs(color.val[1]-color.val[0]), adjust)
    

    显示的顺序是: VAL- 色调- SAT- 色调+

    在不改变代码顺序的情况下替换各种其他字符会导致不同的显示顺序。每次运行代码时顺序都是一致的。我找不到模式,这让我抓狂。

    【讨论】:

    • 我还是遇到了和你一样的问题。你找到解决办法了吗?谢谢
    • 我从来没有找到解决办法;我最后只是添加了字符,直到我得到一个对我有用的订单。它看起来像垃圾,但最终奏效了。
    【解决方案2】:

    我不知道如何解决您的问题,抱歉。

    顺序确实与它们在源中的顺序相同。 (我只是再次测试,同时输入这个。)

    在我的程序中,跟踪栏比你的还要多。所以数量不是问题。

    但是,请注意

    (0) 我用 Qt 编译了 OpenCV。因此“nameWindow”不会使用操作系统的默认窗口库(如 Mac 中的 cocoa)。它将使用 Qt 样式的窗口。

    (1)我用的是OpenCV的C++接口,你的是C接口。
    我建议你切换到 c++ 接口。因为

    C API is not developed for a long time

    因此,您的 cvCreateTrackbar 可能会出现意外行为。(只是猜测。)

    (2) 这是一个可运行的简单代码,使用 c++ 接口。如果c接口出现此问题,您可以使用它们进行尝试。

    #include <iostream>
    #include <string>
    
    #include "opencv2/opencv.hpp"
    
    using namespace std ;
    using namespace cv ;
    
    int main()
    {
        string wt_main = "demo" ;
        int A = 0 , B = 10 , C = 10 ;
    
        namedWindow( wt_main , CV_WINDOW_NORMAL ) ;
    
        createTrackbar( "Bar A", wt_main , &A , 3 , NULL ) ;
        createTrackbar( "Bar B", wt_main , &B , 400 , NULL ) ;
        createTrackbar( "Bar C", wt_main , &C , 400 , NULL ) ;
    
        waitKey() ;
    
        return 0;
    }
    

    用-lopencv_core -lopencv_highgui

    编译

    (3)在

    处寻求帮助

    http://answers.opencv.org/questions/

    还有一行你如何调用cvCreateTrackbar,也许还包括你如何以及在哪里调用cvNameWindow(应该在cvCreateTrackbar之前)。

    这就是我能为你做的一切。祝你好运

    【讨论】:

      【解决方案3】:

      只需在源代码中更改它们的顺序即可。

      窗口中轨迹栏的顺序与您的源代码中的顺序相同。

      如果您的意思是更复杂的布局,据我所知,OpenCV 中没有这样的功能。

      OpenCV 中的 GUI 是一个快速简单的 GUI。

      【讨论】:

      • 似乎在我的程序中,窗口上的轨迹栏的顺序与我的源代码中的顺序不同。我编辑我的问题以显示顺序。请告诉我更多...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      相关资源
      最近更新 更多