Самый простой способ - прочитать файл. Это должно дать вам изображение RGBA. Преобразование RGBA в BGR, а затем преобразование из BGR в HLS.
Я использую Маты так:
Mat src = new Mat(@"D:\yellow.jpg");
Mat Bgr = new Mat();
Mat Hls = new Mat();
CvInvoke.CvtColor(src, Bgr, ColorConversion.Rgba2Bgr);
CvInvoke.CvtColor(Bgr, Hls, ColorConversion.Bgr2Hls);
Я думаю, что так и есть. Вы хотите сделать фильтрацию HSL, которая говорит мне, что вам нужно изображение в формате HSL. Во всех случаях в OpenCV, HSV, HSL и т. Д. Переходят только к 255, поэтому они хорошо вписываются в байт для 8-битных изображений. Если вы используете 32-битную глубину, значения не изменяются. 16-битные изображения НЕ поддерживаются. Для HSV значение для Hue составляет 0 - 180 (я использую BGR с 8-битными значениями без знака), я просто умножаю или делю на 2, но это ТОЛЬКО необходимо, если мне нужно показать это значение пользователю или получить значение Hue от пользователя. В конечном счете, это не влияет на то, как я работаю со значением Hue внутри.
HSL обрабатывается точно так же, значения оттенков для 8-битных являются 0 - 180, 16-битные не поддерживаются, а 32-битные остаются без изменений.
Doug