Трекбар для выбора цвета. Используя C ++, opencv

В моем проекте пользователь должен выбрать цвет для какого-либо процесса. В интернете есть несколько приложений. Они создают три трекбара для значений цвета RGB, но я не хочу делать это так. Я хочу создать трекбар ниже или что-то подобное.

Как я могу создать трекбар, как это? а также

Как я могу получить значения RGB цвет, на котором маркер?

введите описание изображения здесь

1

Решение

Возможности 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;
}
1

Другие решения


По вопросам рекламы [email protected]