您当前的位置: 首页 >  opencv

wendy_ya

暂无认证

  • 1浏览

    0关注

    342博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

OpenCV与C++函数分文件编写——如何设置调用参数为Mat类的函数分文件编写(Mat类实参如何传给子函数)

wendy_ya 发布时间:2021-02-02 19:43:51 ,浏览量:1

在实际应用开发中,由于项目很大,我们往往需要进行函数的分文件编写。函数分文件编写可以让代码结构更加清晰易读。 函数分文件编写主要包括四步:

  1. 创建后缀名为.h的头文件
  2. 创建后缀名为.cpp的源文件
  3. 在头文件中写函数的声明
  4. 在源文件开头包含头文件#include"XX"

比如来看一个示例: swap.h:(.h头文件放到Visual Studio的头文件中) 在这里插入图片描述 swap.cpp:(子函数,放在Visual Studio的源文件中) 在这里插入图片描述 主函数:(主函数,也放在Visual Studio的源文件中) 在这里插入图片描述 通过一个例子,你可能就明白函数的分文件编写了,如果还不明白,可以参考C++教程:https://www.bilibili.com/video/BV1et411b73Z?p=55

下面重点介绍一下带有Mat类的函数分文件编写。

任务要求:建立一个绘制灰度直方图的子函数,并且用函数分文件编写显示。

步骤同样是这四步:

1. 创建后缀名为.h的头文件

这里新建一个depth_hist.h的头文件

在这里插入图片描述

2. 创建后缀名为.cpp的源文件

分别创建main.cpp和depth_hist.cpp,并且分别写入主函数和子函数相关内容。 如main.cpp: 在这里插入图片描述 depth_hist.cpp: 在这里插入图片描述

3. 在头文件中写函数的声明

理论上,将子函数文件的第一行void XXX复制到头文件中再加上;即可实现,但在实际使用中我发现编译器会报一个错误: 在这里插入图片描述 总之就是未声明Mat的标识符。经过多方查阅资料,我终于发现因为Mat是opencv里的文件,所以要标明,即要添加using namespace cv,而由于头文件中无法使用using namespace cv,因此需要增加cv::才行。 最终语句: 在这里插入图片描述

4. 在源文件开头包含头文件#include"XX"

分别在main.cpp和depth_hist.cpp中包含头文件:

#include"depth_hist.h"

最终,main.cpp程序如图: 在这里插入图片描述 depth_hist.cpp部分程序如图:

在这里插入图片描述

ok,以上便是全部内容了,如果对你有所帮助,记得点个赞哟~

关注
打赏
1659256378
查看更多评论
立即登录/注册

微信扫码登录

0.0361s