5

この情報がどこにあるのかわかりません。

私は.jpgをロードし、それをグレースケールに変換しましたcv::cvtColor(*input_image_grayscale, *input_image_grayscale, CV_BGR2GRAY);

次に、ピクセルを参照しようとしましinput_image_grayscale->at<float>(row, col)たが、アサーション エラーが発生しました。これを逆参照するのに適切なデータ型 (明らかに float ではない) を判断するにはどうすればよいですか? ありがとう

参考までに、走っinput_image_grayscale->type()て0になりました。

4

1 に答える 1

4

type によって返される値は、OpenCV がプリプロセッサ定義で宣言する単なる整数です。次のような switch ステートメントで確認できます。

switch( matrixType )
{
    case CV_8UC1:

    .... check for other types
}

この8U例の は unsigned char をC1指し、単一のチャネル イメージを指します。CV_8UC1 は として定義されている0ため、これが Mat のタイプでありunsigned char、参照タイプに使用する必要があります。

関数 Mat::depth を使用して、単一の行列要素のサイズの型を返すこともできます。これは、グレースケールであるため、単一チャネルの画像であることが既にわかっているためです。

于 2012-04-22T23:58:35.710 に答える