我是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 ++?对这个问题的奇怪格式表示歉意,因为这是我在这个论坛上的第一个问题。欣赏理解和帮助!! 感谢
答案 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;
...
}