В моем проекте пользователь должен выбрать цвет для какого-либо процесса. В интернете есть несколько приложений. Они создают три трекбара для значений цвета RGB, но я не хочу делать это так. Я хочу создать трекбар ниже или что-то подобное.
Как я могу создать трекбар, как это? а также
Как я могу получить значения RGB цвет, на котором маркер?
Возможности OpenCV GUI не так богаты. Вы можете использовать Qt или аналогичный, чтобы создать приятный графический интерфейс, и все еще выполнять обработку изображений в OpenCV.
Что касается трекбара в OpenCV, вы, возможно, захотите использовать цветовое пространство HSV (Hue, Saturation, Value) вместо RGB. фиксация S=255
а также V=255
Вы можете выбрать цвет, изменив H
В диапазоне [0, 180]
, Обратите внимание, что в OpenCV для CV_8UC3
изображения, диапазоны 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;
}