8ビットの入力カラーイメージ(入力ファイルはa.bmpファイル)のすべてのデータを新しい16ビットのマット配列に入れたいです。
これを行うのは、いくつかの画像パッチを合計してから、各ピクセルの平均値を作成する必要があるためです。
Mat img = imread(Inputfile); //there now should be values between 0 and 255
たとえば、次のように青い値に対処します
uchar* ptr = img.data + img.step*row;
cout << ptr[n*col] << endl;
単一の文字のみが表示され、値は表示されません。
cout << static_cast<short>(ptr[n*col]) << endl;
短いまたは大きいものに型キャストすると、正しい値が表示されます。しかし、unsigned char(私の意見では正しいデータ型)にキャストすると、型キャストがない場合と同じ文字が表示されます。
私が知っているように、Shortには2バイトがありますが、color.bmpにはチャネルごとに1バイトの色情報しかありません。最悪の場合81(128 = 7ビットより小さい)ピクセル値を合計する必要があるので、ターゲット値としての短い値が大きいと思いました。
8ビット値に簡単にアクセスして16ビット配列で使用する正しい方法に関するヘルプは素晴らしいでしょう。
ありがとうございました。