Matlab rgb2hsv维度

时间:2012-04-04 09:12:31

标签: matlab

我在matlab文档中读到rgb2hsv将返回一个m-by-by-by-3图像数组,但是当我调用它时,我得到一个1乘3的向量。我误会了什么吗? 以下是示例代码:

image_hsv = rgb2hsv('filepath')

并作为输出

image_hsv =

        0.7108    0.3696   92.0000

1 个答案:

答案 0 :(得分:2)

您无法在文件路径上调用rgb2hsv - 必须在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     

您的原始代码所做的是将文件路径字符串转换为ascii数字,将此数组的前三个值作为RGB值并将其转换为HSV。

注意:此示例突出显示了MATLAB弱类型系统的危险,其中数据类型从一种类型静默转换为另一种类型。也许缺少对rgb2hsv函数的正确输入检查。