2012-04-04 3 views
0

Я читаю в документации по matlab, что rgb2hsv вернет массив изображений m-by-n-by-3, но когда я его назову, я получаю вектор 1 на 3. Я что-то не понимаю? Вот пример кода:Matlab rgb2hsv dimensions

image_hsv = rgb2hsv('filepath') 

и в качестве выходного сигнала

image_hsv = 

     0.7108 0.3696 92.0000 

ответ

2

Вы не можете назвать rgb2hsv на FilePath - он должен быть вызван на матрицу изображения MATLAB. Попробуйте:

image_rgb = imread('filepath'); % load the image array to MATLAB workspace 
image_hsv = rgb2hsv(image_rgb); % convert this array to hsv 

Вы можете увидеть эти матрицы с:

>> whos image* % display all variables whose name begins with 'image' 
    Name    Size     Bytes Class  Attributes 

    image_hsv  480x640x3   7372800 double    
    image_rgb  480x640x3    921600 uint8  

Что исходный код делает было преобразование строки Filepath в ASCII номера, принимая первые три значения этого массива в качестве значений RGB и превращая их в HSV.

ПРИМЕЧАНИЕ. В этом примере подчеркивается опасность с помощью слабого набора системы MATLAB, где типы данных преобразуются молча в один тип из одного типа в другой. Также возможно отсутствие правильной проверки ввода функции rgb2hsv.

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