在函数C ++中创建全局变量

时间:2016-01-06 11:26:58

标签: c++ function opencv

我正在使用C ++和openCV进行人员跟踪。我正在尝试创建一个应用MOG2背景减法方法的函数。这是我第一次尝试制作功能。 该函数如下所示:

Mat FindMOG2(Mat FrameShown){


    MOG2Pointer->apply(FrameShown, MOG2Mask);

    // find contours
    findContours(MOG2Mask, Contours, Hierachy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));

    //approximate contours to polygons and get bounding rects
    vector<vector<Point> > ContoursPoly(Contours.size());
    vector<Rect> MOGRects(Contours.size());

    for (int i = 0; i < Contours.size(); i++){
        approxPolyDP(Mat(Contours[i]), ContoursPoly[i], 3, true);
        MOGRects[i] = boundingRect(Mat(ContoursPoly[i]));
        }

    //draw bounding rects
    Mat Drawing = Mat::zeros(MOG2Mask.size(), CV_8UC3);

    for (int i = 0; i < Contours.size(); i++){
        vector<Vec4i>(), 0, Point());
        rectangle(Drawing, MOGRects[i].tl(), MOGRects[i].br(), Scalar(0, 255, 0), 2, 8, 0);
        }
    return Drawing;
}

问题是,我还必须声明这些全球性的&#39; main()

之外的变量
Mat MOG2Mask;
vector<vector<Point> > Contours;
vector<Vec4i> Hierachy;
Ptr<BackgroundSubtractor> MOG2Pointer;

这是在主内部,但在播放视频的while循环之外

MOG2Pointer = createBackgroundSubtractorMOG2();

基本上,我希望函数能够自动声明这些变量,而不需要初始化它们。我是编程的新手,所以如果有人能指出我正确的方向,或者只是给我研究一些东西,我将非常感激。

干杯。

1 个答案:

答案 0 :(得分:0)

不是全局声明变量,而是在函数范围内声明它们。