我正在使用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;
}问题是,我还必须在main()函数之外声明这些'global‘变量。
Mat MOG2Mask;
vector<vector<Point> > Contours;
vector<Vec4i> Hierachy;
Ptr<BackgroundSubtractor> MOG2Pointer;这在main内,但在播放视频的while循环之外
MOG2Pointer = createBackgroundSubtractorMOG2();基本上,我希望函数自动声明这些变量,而不必初始化它们。我是编程新手,所以如果有人能给我指出正确的方向,或者只是给我一些研究的东西,我将非常感激。
干杯。
发布于 2016-01-06 19:42:50
不是全局声明变量,而是在函数范围内声明它们。
https://stackoverflow.com/questions/34632012
复制相似问题