У меня есть следующий код, который преобразует цвет из HSV в RGB:
var hsvColor = new Hsv(h, s, v);
var hsvImage = new Image<Hsv, byte>(1, 1, hsvColor);
var rgbImage = new Image<Rgb, byte>(1, 1);
CvInvoke.CvtColor(hsvImage, rgbImage, ColorConversion.Hsv2RgbFull);
var rgbColor = rgbImage[0, 0];
Как видите, он использует изображение размером 1 x 1 пиксель в качестве промежуточного шага. Итак, в основном он конвертирует все изображение из HSV в RGB, просто чтобы прочитать значение единственного пикселя в 0,0.
Но, честно говоря, я не нашел метода, который бы потребовал один экземпляр Hsv
и верните мне один экземпляр Rgb
.
Есть ли более прямой способ преобразовать один цвет из одного цветового пространства в другое?
У меня есть уже видел:
- этот ответ предлагает написать мою собственную функцию, так как ее не существует. Однако это было в 2014 году.
- этот вопрос , но это возможно только из RGB в HSV, и он использует System.Drawing.Color, а не цвета EmguCV.
- в этом сообщении на форуме Emgu также используется изображение
- в этом вопросе используется
Mat
, но это не сильно отличается от Image
Я думаю