5

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

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

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

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

在我的源代码中:

亮度

对比

灰色的

灰色 R 百分比

灰色 G 百分比

灰色 B 百分比

温度

色调

饱和

均衡

在窗户上:

灰色 G 百分比

对比

均衡

亮度

灰色的

灰色 G 百分比

灰色 R 百分比

温度

色调

饱和

4

3 回答 3

4

在 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- HUE- SAT- HUE+

替换各种其他字符而不改变代码中的顺序会导致不同的显示顺序。每次运行代码时顺序都是一致的。我找不到模式,这让我发疯。

于 2015-11-05T16:21:17.087 回答
0

不知道怎么解决你的问题,抱歉。

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

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

但是,请注意

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

(1)我使用的是OpenCV的C++接口,而你的是C接口。
我建议你切换到 c++ 接口。自从

C API 很久没开发了

所以你的 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 之前)。

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

于 2013-12-07T16:42:37.447 回答
0

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

窗口上轨迹栏的顺序与它们在源代码中的顺序相同。

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

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

于 2013-12-04T02:18:26.383 回答