轨迹栏选择颜色。使用C ++,opencv

时间:2015-07-09 22:33:57

标签: c++ opencv image-processing colors trackbar

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

我该如何创建这样的轨迹栏?和

如何将RGB值作为标记所在的颜色?

enter image description here

1 个答案:

答案 0 :(得分:1)

OpenCV GUI功能并不丰富。您可能希望使用Qt或类似功能来创建一个漂亮的GUI,并仍然在OpenCV中进行图像处理。

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

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

以下示例可能会为您提供有关如何使用轨道栏和Hue值的一些提示:

#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;
}