CMFCColorButton、COLORREF、CvScalar 类在MFC中的处理总结

16 篇文章 0 订阅
3 篇文章 0 订阅

最近在MFC中搭建opencv环境,使用到了颜色管理功能,从CMFCColorButton控件得到的颜色值转换到CvScalar 遇到的一些问题。

CMFCColorButton: 为MFC中MFC color button control控件的类。暂且定义一个变量为color_button与控件关联

COLORREF:为c++中定义为typedef DWORD COLORREF;的变量。定义一个变量为   color_ref

CvScalar :为opencv中使用的颜色变量。定义一个变量为color_scalar


通过CMFCColorButton控件取得之后,使用color_ref= color_button.GetColor();获得控件选择的颜色值

在c++中如何将color_ref值分离出RGB三元色呢?找了好久资料发现,c++提供了三个宏定义:

GetRValue(color_ref)
GetGValue(color_ref)
GetBValue(color_ref)

这三个宏的定义原型为

#define GetRValue(rgb)      (LOBYTE(rgb))
#define GetGValue(rgb)      (LOBYTE(((WORD)(rgb)) >> 8))
#define GetBValue(rgb)      (LOBYTE((rgb)>>16))

三个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]进行赋值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值