我在 matlab 文档中读到 rgb2hsv 将返回一个 m×n×3 图像数组,但是当我调用它时,我得到一个 1×3 向量。我是不是误会了什么?这是一个示例代码:
image_hsv = rgb2hsv('filepath')
并作为输出
image_hsv =
0.7108 0.3696 92.0000
我在 matlab 文档中读到 rgb2hsv 将返回一个 m×n×3 图像数组,但是当我调用它时,我得到一个 1×3 向量。我是不是误会了什么?这是一个示例代码:
image_hsv = rgb2hsv('filepath')
并作为输出
image_hsv =
0.7108 0.3696 92.0000
您不能在文件路径上调用 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
功能的正确输入检查。