2013年6月2日日曜日

OpenCV で16bitのカラー画像の画素値を取得・設定する(C言語)

8ビットカラー画像の画素値へのアクセスは公式マニュアルのとおり, IplImage->imageData で直接アクセスできる.また,グレースケール画像の場合は,ビット数や型に関係なく,cvGetReal2D 関数で取得できる.

では,16ビットカラー画像で画素ごとにアクセスするにはどうしたらいいのか.その取得方法や設定方法を紹介する.方法としては,CvScalar型を経由し,Get*D,Set*D関数を使うのが簡単である.CvScalar型は,double val[4] のみを持つ構造体で,各色の輝度値を格納している.以下がサンプルコードである.なお,この方法は16ビットだけでなく他の型の画像でも適用可能である.

画素値の取得


IplImage* img; // img は16ビットカラー画像とする

CvScalar pixel = cvGet2D(img, y, x);
double b = pixel.val[0];
double g = pixel.val[1];
double r = pixel.val[2];

画素値の設定


CvScalar pixel = cvScalar(b, g, r, 0);
cvSet2D(img, y, x, pixel);


0 件のコメント:

コメントを投稿