2015-10-04 3 views
3

Мне нужно разработать код для Android, используя opencv, код, эквивалентный MATLAB. В том, что я должен прочитать изображение и преобразовать его в HSV, и я сделал это с помощью:Преобразование Opencv hsv эквивалентно Matlab Hsv

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

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

ответ

2

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

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

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

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

вам необходимо масштабировать H A nd S, V по-разному. Вы можете использовать split и merge, чтобы получить различную матрицу каналов и применить правильное масштабирование.

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


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

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

вы можете помочь мне, как я могу разделить и объединить каналы, пожалуйста, поделитесь ссылкой для этого, если у вас есть. Огромное спасибо. – AnonymousDev

+0

@ Varun обновил ответ. Я не совсем уверен, так как я не программирую на Java, но должен работать нормально. Пожалуйста, дайте мне знать. – Miki

+0

Спасибо, что это работает .. !!! – AnonymousDev

2

255 - 1,0, 128 - 0,5 и так далее. просто разделите n/255, чтобы получить значения Matlab HSV

+0

Thanx @smirnov, это помогло мне. – AnonymousDev

Смежные вопросы