CMFCOCoorButton、COLORREF、CvScalar類のMFCにおける処理まとめ


最近MFCでopencv環境を構築し,色管理機能を用いてCMFCOorButtonコントロールから得られた色値をCvScalarに変換する問題がある.
CMFCCColorButton:MFCのMFC color buttonコントロールのクラスです.変数をcolor_として一旦定義するbuttonとコントロールの関連付け
COLORREF:c++でtypedef DWORD COLORREFと定義する.の双曲線コサインを返します.変数をcolor_として定義ref
CvScalar:Opencvで使用される色変数です.変数をcolor_として定義scalar
CMFCOLOrButtonコントロールで取得した後、color_ref= color_button.GetColor();コントロールで選択した色の値を取得
c++でカラーをどうするかref値はRGBの3元色を分離しますか?長い間資料を探していたが、c++は3つのマクロ定義を提供していた.
GetRValue(color_ref)
GetGValue(color_ref)
GetBValue(color_ref)

この3つのマクロの定義は
#define GetRValue(rgb)      (LOBYTE(rgb))
#define GetGValue(rgb)      (LOBYTE(((WORD)(rgb)) >> 8))
#define GetBValue(rgb)      (LOBYTE((rgb)>>16))

3つのgetマクロでそれぞれR,G,Bの値を取得できます.
CvScalar構造体のタイプを見てみましょう:color_scalar=cvScalar(GetRValue(color_ref),GetGValue(color_ref),GetBValue(color_ref)); 色の割り当てが完了します.
CvScalarのプロトタイプは次のとおりです.
typedef struct CvScalar {     double val[4]; } CvScalar;
したがってval[0-2]を使用して値を割り当てることもできます.