opencv中的CV_LOAD_IMAGE_GRAYSCALE与WINDOW_AUTOSIZE

本文详细解析了OpenCV中窗口属性与图像加载标志的使用方式及它们的区别。介绍了WINDOW_AUTOSIZE与CV_LOAD_IMAGE_GRAYSCALE等枚举的具体含义,并解释了命名空间与全局作用域的概念。
摘要由CSDN通过智能技术生成
访问WINDOW_AUTOSIZE必须是cv命名空间(cv::WINDOW_AUTOSIZE),而CV_LOAD_IMAGE_GRAYSCALE是全局性的(::CV_LOAD_IMAGE_GRAYSCALE),感觉很别扭,为什么::CV_LOAD_IMAGE_GRAYSCALE是全局性的而::WINDOW_AUTOSIZE是属于命名空间cv,直接右键“转到定义”得到以下结果:
namespace cv
{

enum {
    // Flags for namedWindow
    WINDOW_NORMAL   = CV_WINDOW_NORMAL,   // the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
    WINDOW_AUTOSIZE = CV_WINDOW_AUTOSIZE, // the user cannot resize the window, the size is constrainted by the image displayed
    WINDOW_OPENGL   = CV_WINDOW_OPENGL,   // window with opengl support

    // Flags for set / getWindowProperty
    WND_PROP_FULLSCREEN   = CV_WND_PROP_FULLSCREEN,  // fullscreen property
    WND_PROP_AUTOSIZE     = CV_WND_PROP_AUTOSIZE,    // autosize property
    WND_PROP_ASPECT_RATIO = CV_WND_PROP_ASPECTRATIO, // window's aspect ration
    WND_PROP_OPENGL       = CV_WND_PROP_OPENGL       // opengl support
};

enum
{
/* 8bit, color or not */
    CV_LOAD_IMAGE_UNCHANGED  =-1,
/* 8bit, gray */
    CV_LOAD_IMAGE_GRAYSCALE  =0,
/* ?, color */
    CV_LOAD_IMAGE_COLOR      =1,
/* any depth, ? */
    CV_LOAD_IMAGE_ANYDEPTH   =2,
/* ?, any color */
    CV_LOAD_IMAGE_ANYCOLOR   =4
};

这里就比较清晰了,两个都在头文件里,但::WINDOW_AUTOSIZE在命名空间cv中定义,所以::WINDOW_AUTOSIZE只能通过命名空间cv访问,另外虽然 ::WINDOW_AUTOSIZE属于opencv这个第三方库,但是本程序包含了相应的头文件,所以可以通过::全局访问,

总结一下
1.::可以访问全局变量(全局作用域)
2.::可以在using namespace 之后直接访问相应命名空间的类,或者在没有using的情况下通过命名空间:: 来访问相应的类(命名空间)
3.::用来访问类函数(主要区别于对象的成员函数访问方法的“.”)(类静态成员)

另外遇见 CWnd::MessageBox(_T("测试!"))不要以为CWnd是命名空间,又第2、3可知,CWnd可能是类(MessageBox是静态函数)或者命名空间。

最后::可以用作提示作用,即直接::或者命名空间::或者类::(全局作用域、命名空间、类静态成员)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值