0

matlabのドキュメントで、rgb2hsvがm x n x 3の画像配列を返すことを読んでいますが、それを呼び出すと、1x3のベクトルが得られます。私は何かを誤解していますか?サンプルコードは次のとおりです。

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数値に変換し、この配列の最初の3つの値をRGB値として取得し、これらをHSVに変換することでした。

注:この例では、データ型が1つの型から別の型にサイレントに変換されるMATLABの弱い型付けシステムの危険性を強調しています。また、関数への正しい入力チェックが不足している可能性もありrgb2hsvます。

于 2012-04-04T09:18:58.373 に答える