我在matlab文档中读到rgb2hsv将返回一个m-by-by-by-3图像数组,但是当我调用它时,我得到一个1乘3的向量。我误会了什么吗? 以下是示例代码:
image_hsv = rgb2hsv('filepath')
并作为输出
image_hsv =
0.7108 0.3696 92.0000
答案 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
函数的正确输入检查。