前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++函数调用,函数编写(写自己的函数)以及数组调用,传递

c++函数调用,函数编写(写自己的函数)以及数组调用,传递

作者头像
用户7886150
修改2021-02-03 10:40:22
2.3K0
修改2021-02-03 10:40:22
举报
文章被收录于专栏:bit哲学院

参考链接: C++函数

在matlab里.m文件分执行文件和函数文件 在c++中执行文件指:main函数 函数文件:其他所有需要用到的函数 

在c++中,函数文件名没有特殊讲究,将文件添加到工程目录便能使用  对函数的要求有三点 

函数的完整文件 输入参数的定义 函数声明加入头文件 

1.函数的完整文件 

#include <opencv2/opencv.hpp>

using namespace cv;

void cameracapture(Mat &frame, int mytime, int imageWidth,int imageHeight)

{

    char c = 0;

    VideoCapture capture(0);

    capture.set(CV_CAP_PROP_FRAME_WIDTH, imageWidth*2);//宽度2560

    capture.set(CV_CAP_PROP_FRAME_HEIGHT, imageHeight);//高度720

    for (int i=0; i < mytime; i++)

    {

        capture >> frame;

    }

}

函数的完整文件包括了函数需要的头文件 

 #include <opencv2/opencv.hpp>

 using namespace cv;

以及剩下的函数的程序段 这里解释一下加&和不加&的区别 Mat &frame 加&的变量传递的是变量地址,直白的理解为,加了后我在函数中对该变量修改后,会对我的主函数main中的对应变量进行修改。这里我的程序是打开相机,并把拍摄图像返回main函数,因此我需要随时根据拍摄修改我的main函数中frame的值。 int mytime, int imageWidth,int imageHeight这些则是传入值,在函数内进行修改后不影响main里面的值,因为这些值只传入函数,而不需要函数再传回主函数。 这里还有一点编程技巧 我们通过函数调用的方式进行运算,有两种方式得到运算结果 ①设置函数的返回值,return ②将传入值的地址(即传入值自身)交给函数,函数对其进行运算相当于直接对传入值进行运算。 

2.输入参数的定义 

我们在main中调用其他函数时,我们的输入参数需要提前定义 

main ()

{

Mat frame; 

int mytime = 10;

int imageWidth = 1280;

int imageHeight = 720;

cameracapture(frame, mytime, imageWidth, imageHeight);//注意这里和函数定义不同

………………

}

3.函数声明加入头文件 

我们调用其他函数前必须先声明 将 

 void cameracapture(Mat &frame, int mytime, int imageWidth,int imageHeight)

写入.h文件(头文件),写入头文件后也就告知了我们的项目,我们声明了,项目中是有该函数的定义的。为什么要用头文件?因为我们把我们用到的函数声明都写到一个.h文件里,下次再使用时我们直接#include XXX.h即可,没有必要再对用到的函数一个一个地声明。 

完成上面的三步,我们自己的函数就制作好了,使用起来比较方便。 这里再扩展一下 我们在数组传入函数,传出函数时可能会面临着数组无法修改的问题,这里二郎给大家提供一个解决办法,不是最优,但是可行 main里面: 

float key_data[10][4] = { 0 };

my_f(img_cir_L, img_cir_R, key_data);

函数里面: 

void my_f(Mat rectifyImageL, Mat rectifyImageR, float(&key_data)[10][4])

头文件里面: 

 void my_f(Mat rectifyImageL, Mat rectifyImageR, float(&key_data)[10][4]);

这样便能实现数组数据的传入和处理后结果的传递了

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档