2011年4月9日土曜日

【C】RGBをHSVに変換した時の表示について。

01int main(int argc,char** argv)
02{
03    cvNamedWindow("source",CV_WINDOW_AUTOSIZE);
04    cvNamedWindow("HSV");
05 
06    IplImage* sourceImage = cvLoadImage(argv[1],
07            CV_LOAD_ANYDEPHT | CV_IMAGE_ANYCOLOR );
08    IplImage* hsvImage  = cvCreateImage(cvGetSize(sourceImage),
09             IPL_DEPTH_8U,
10             3);
11   cvCvtColor(sourceImage,hsvImage,CV_BGR2HSV);
12 
13   cvShowImage("source", sourceImage);
14   cvShowImage("HSV", hsvImage);
15 
16   /*------略-------*/
17}


RGBの画像のデータをHSVに変換して、そのデータがどんな感じになっているのかを上記のように表示しようとしたところ、画像が変な色で表示されてしまった。

こんな感じ。














で、少し調べてみたら、HSVに変換した情報自体が色空間情報をもっている訳ではないとの事。要するに画像を操作するようにデータを変換してあげていて、表示するための変換ではないと言う事らしい。というわけでcvShowImageで表示しようとしたときに、変な色で表示されてしまうと言う事らしい。たしかに、IplImage構造体のメンバ変数にもHSVとRGBを判別している値はない(とおもわれる?)し、cvShowImageの関数に引数を渡している訳でもないので、当然と言えば当然なのかもしれない。

0 件のコメント:

コメントを投稿