1
在我的项目中,用户应该为某个进程选择一种颜色。互联网上有一些应用程序。他们为RGB颜色创建三个轨道条,但我不想这样做。我想在下面创建一个跟踪栏或类似的东西。轨迹栏选择颜色。使用C++,opencv
我该如何创建一个跟踪栏?和
我怎样才能得到RGB值标记的颜色?
在我的项目中,用户应该为某个进程选择一种颜色。互联网上有一些应用程序。他们为RGB颜色创建三个轨道条,但我不想这样做。我想在下面创建一个跟踪栏或类似的东西。轨迹栏选择颜色。使用C++,opencv
我该如何创建一个跟踪栏?和
我怎样才能得到RGB值标记的颜色?
OpenCV的GUI功能都没有大富大贵。您可能需要使用Qt或类似软件来创建一个不错的GUI,并且仍然可以在OpenCV中进行图像处理。
关于OpenCV上的轨迹条,您可能需要使用HSV(色调,饱和度,值)色彩空间而不是RGB。修复S=255
和V=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;
}