0

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

image_hsv = rgb2hsv('filepath')

并作为输出

image_hsv =

        0.7108    0.3696   92.0000
4

1 回答 1

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功能的正确输入检查。

于 2012-04-04T09:18:58.373 回答