全局初始化c ++类

时间:2017-01-31 16:09:34

标签: c++ class dlib

我是c ++类的初学者,使用dlib人脸检测器。在用于网络摄像头的示例代码中,面部检测和姿势模型在主函数中加载,如下所示:

int main(){
    frontal_face_detector detector = get_frontal_face_detector();
    shape_predictor pose_model;
    deserialize("shape_predictor_68_face_landmarks.dat") >> pose_model;

}

但是,我的项目结构的方式是通过另一个函数调用dlib面部检测,而不是像示例中那样调用main。因此,我需要使模型成为全局模型,以便执行dlib的函数知道什么是'检测器'和' pose_model'无需将其作为参数传递给该函数。反正有吗?如果我在函数本身内加载模型,那么每次调用函数时它都会被加载,从而降低性能。

static dlib :: frontal_face_detector detector;  static dlib :: shape_predictor pose_model;

目前我正在使用'静态'将它们加载到函数本身,但我不确定这是否是正确的C ++?对这个问题的奇怪格式表示歉意,因为这是我在这个论坛上的第一个问题。欣赏理解和帮助!! 感谢

1 个答案:

答案 0 :(得分:1)

初始化它们时,您可以像在任何其他全局变量中一样简单地声明它们。

frontal_face_detector detector = get_frontal_face_detector();
shape_predictor pose_model;

int main(){

       deserialize("shape_predictor_68_face_landmarks.dat") >> pose_model;
       ...
}