• ベストアンサー

マウスクリックしたポイントのHSV値の表示方法

VC++のMFCにて顔画像処理について研究中の者です。 マウスクリックしたポイントのHSV値をそれぞれ3つのEditControlに表示させようと考えています。 RGB値をHSVに変換させる方法は、OpenCVのcvCvtColor()関数を使って    cvCvtColor( frameImage,hsvImage,CV_BGR2HSV ); という風に変換させようと思っています。 クリックした位置のHSV値の表示方法を教えてください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

処理を細分化すべし。 クリックしたら何が起きるか? クリックイベントで呼ばれる関数はどれか? クリックイベントで呼ばれる関数のエントリポイントはどう書けば良いか? クリックイベントで呼ばれる関数には、何が渡されて来るか? 何がクリックされたか?(ピクチャか?フォームか?ウィンドゥか?) クリックイベントで拾った座標は、ウィンドウ座標か、クライアント座標か? ピクチャがクリックされ、クリック座標が判ったら、座標変換を行って、クリック座標からピクチャの座標を割り出す。 ピクチャの座標が判ったら、その座標からピクセル情報を取り出す。 ピクセル情報からRGB値を取り出す。 RGB値からHSV値に変換する。 HSV値からH、S、Vを取り出す。 Hの値を文字列化して、EditControlのテキストプロパティに放り込む。 Sの値を文字列化して、EditControlのテキストプロパティに放り込む。 Vの値を文字列化して、EditControlのテキストプロパティに放り込む。 さて、この中で、何が判らない? 判る物と判らない物を切り分けしたら、判らない物を更に細分化し、それを「判る物と判らない物」に切り分けよう。 それを繰り返していけば、最後は「このAPI関数の仕様が判らない」とか「これの演算方法が判らない」とか「探せばどっかに答えが書いてある事」にまで細分化される。 後は、探した答えを、細分化したのと逆の手順で組み立てていけば良い。 で、その作業は「プログラムを1命令づつ書いていく」のと等しい。