Конвертировать формате OpenCV ВПГ эквивалентно ВПГ Матлаб
Я должен разработать код для android,используя opencv, код, эквивалентный MATLAB. В этом я должен прочитать изображение и преобразовать его в HSV, и я сделал это с помощью:
Imgproc.cvtColor(temp, hsv , Imgproc.COLOR_RGB2HSV);
И когда я перебираю каждое значение пикселя, возвращаемое в диапазоне 0-255 оттенка ,где в Matlab оно возвращается в диапазоне 0-1 , я не знаю, как написать эквивалентный код для него . Я новичок.Я не очень разбираюсь в обработке изображений.
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);