Конвертировать формате OpenCV ВПГ эквивалентно ВПГ Матлаб


Я должен разработать код для android,используя opencv, код, эквивалентный MATLAB. В этом я должен прочитать изображение и преобразовать его в HSV, и я сделал это с помощью:

Imgproc.cvtColor(temp, hsv   , Imgproc.COLOR_RGB2HSV);

И когда я перебираю каждое значение пикселя, возвращаемое в диапазоне 0-255 оттенка ,где в Matlab оно возвращается в диапазоне 0-1 , я не знаю, как написать эквивалентный код для него . Я новичок.Я не очень разбираюсь в обработке изображений.

2 3

2 ответа:

Диапазон значений изображений RGB находится, очевидно, в [0, 255]. Для изображений ВПГ это зависит от типа изображения (см. OpenCV doc):

  • 8 бит изображения: H в [0, 180], S, V в [0, 255]
  • 32bit изображения: H в [0, 360], S, V в [0,1]

Итак, после преобразования в HSV

Imgproc.cvtColor(temp, hsv, Imgproc.COLOR_RGB2HSV);

Вам нужно масштабировать значения H и S, V по-разному. Вы можете использовать split и merge, чтобы получить различные каналы matrice и применить правильное масштабирование.

Обратите внимание, что OpenCV хранит изображения RGB как BGR, поэтому вам, вероятно, понадобится COLOR_BGR2HSV.

Вы можете разделить и объединить, как:

List<Mat> planes = new ArrayList<Mat>(3);
Core.split(hsv, planes);
// Scale each single plane
Core.merge(planes , hsv);

255-это 1.0, 128-0.5 и так далее. просто разделите n/255, чтобы получить значения MATLAB HSV