OpenCV:头文件和命名空间

OpenCV中的C++类和函数都是定义在命名空间cv之内的,就像C++的命名空间是std一样。

链接地址:《C++学习笔记二之4种访问名称空间std的方法》

 

OpenCV2的头文件


一般来说OpenCV2,使用哪一模块的内容就添加哪一模块的头文件,例如:

1、如果使用了Mat类,属于core模块。

那么头文件就是#include <opencv2/core/core.hpp>

2、如果使用了imread()或者imshow()函数输入与显示图像进行图形用户交互。

那么头文件就是#include <opencv2/highgui/highgui.hpp>

但是有一种更直接的方法,就是只是用使用头文件#include <opencv2/opencv.hpp>,为什么可以这样子用呢?因为OpenCV2所有模块的hpp文件都是包含在了opencv2文件夹内的。

但是要注意的是,如果直接使用头文件#include <opencv2/opencv.hpp>,每次编译程序时,会加载所有模块,有些模块是你不需要的,浪费时间,降低代码性能。

因此,对于新手,建议先使用头文件#include <opencv2/opencv.hpp>,这样不会因为头文件的问题苦恼,代码能运行就好了,这点时间还不算什么大事。而对于使用了一段时间OpenCV的程序员,此时,需要提高程序的性能,节省代码的处理时间,建议使用各个模块的头文件,也方便熟悉opencv的各个模块内容。

 

OpenCV的命名空间使用


第一种使用方法:使用using编译指令“using namespace cv;”,直接写在头文件后面。

#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
    Mat frame;
    frame=imread("1.png",1);
    imshow("【神话】",frame);
    waitKey(0);
    return 0;
}

第二种使用方法:通过作用域解析运算符::,使用名称空间来限定该名称,在使用opencv类或者函数的时候在前面加上cv::来表示该名称属于名称空间cv

cv::Mat
cv::imread()
cv::imshow()

两种方法的区别

1、第一种方法使用简单,只需要添加1次,属于全局的,但是增加了名称冲突的可能性。假设,名称空间a和b中都有student这个名称,然后我在代码中使用了student这个名称,那么这个student到底属于谁,就说不清楚了。对于新手,代码量较小,基本上不存在名称冲突,为了方便,可以推荐使用,但是代码量大了,特别是添加了其它类库,就不推荐了。

2、第二种方法就是使用麻烦点,每个名称前面都需要添加1次,来表示该名称属于某个名称空间。但是此种方法不存在导致名称冲突的可能性,也符合C++名称空间的本意。所以,建议使用此种方法,大部分opencv程序员也是这么做的。


 

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值