2015-07-09 38 views
1

在我的项目中,用户应该为某个进程选择一种颜色。互联网上有一些应用程序。他们为RGB颜色创建三个轨道条,但我不想这样做。我想在下面创建一个跟踪栏或类似的东西。轨迹栏选择颜色。使用C++,opencv

我该如何创建一个跟踪栏?和

我怎样才能得到RGB值标记的颜色?

enter image description here

回答

1

OpenCV的GUI功能都没有大富大贵。您可能需要使用Qt或类似软件来创建一个不错的GUI,并且仍然可以在OpenCV中进行图像处理。

关于OpenCV上的轨迹条,您可能需要使用HSV(色调,饱和度,值)色彩空间而不是RGB。修复S=255V=255,可以通过更改范围内的H来选择颜色。请注意,在OpenCV进行CV_8UC3图像,HSV的范围是:

H in [0, 180] 
S,V in [0, 255] 

下面的例子可以给你如何与跟踪条和色调值起到一些提示:

#include <opencv2/opencv.hpp> 
using namespace cv; 

Mat3b rgb; 
Mat3b hsv; 

void on_trackbar(int hue, void*) 
{ 
    hsv.setTo(Scalar(hue, 255, 255)); 
    cvtColor(hsv, rgb, COLOR_HSV2BGR); 
    imshow("HSV", rgb); 
} 

int main(int argc, char** argv) 
{ 
    // Init images 
    rgb = Mat3b(100, 300, Vec3b(0,0,0)); 
    cvtColor(rgb, hsv, COLOR_BGR2HSV); 

    /// Initialize values 
    int sliderValue = 0; 

    /// Create Windows 
    namedWindow("HSV", 1); 

    /// Create Trackbars 
    createTrackbar("Hue", "HSV", &sliderValue, 180, on_trackbar); 

    /// Show some stuff 
    on_trackbar(sliderValue, NULL); 

    /// Wait until user press some key 
    waitKey(0); 
    return 0; 
}