在我的项目中,用户应该为某个过程选择一种颜色。互联网上有一些应用程序。他们为RGB颜色值创建了三个轨道栏,但我不想这样做。我想创建一个下面的轨道栏或类似的东西。
我该如何创建这样的轨迹栏?和
如何将RGB值作为标记所在的颜色?
答案 0 :(得分:1)
OpenCV GUI功能并不丰富。您可能希望使用Qt或类似功能来创建一个漂亮的GUI,并仍然在OpenCV中进行图像处理。
关于OpenCV上的轨迹栏,您可能希望使用HSV(色调,饱和度,值)颜色空间而不是RGB。修复S=255
和V=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;
}