📄 testjesorsky.cc
字号:
const char *help = "\progname: testJesorsky.cc\n\code2html: This program tests jesorskyGTMeasurer class methods.\n\version: Torch3 vision2.0, 2004-2005\n\(c) Sebastien Marcel (marcel@idiap.ch)\n";#include "FrontalFace19x19.h"#include "FrontalFace15x20.h"#include "jesorskyGTMeasurer.h"#include "Rectangle2D.h"#include "CmdLine.h"#include "DiskXFile.h"using namespace Torch;int main(int argc, char *argv[]){ char *posfilename; int x_corner, y_corner; int width, height; int facemodel_id; real J; bool verbose; CmdLine cmd; cmd.setBOption("write log", false); //cmd.info(help); cmd.addText("\nArguments:"); cmd.addSCmdArg("posfile", &posfilename, "pos file"); cmd.addICmdArg("x", &x_corner, "x corner"); cmd.addICmdArg("y", &y_corner, "y corner"); cmd.addICmdArg("w", &width, "width"); cmd.addICmdArg("h", &height, "height"); cmd.addText("\nArguments:"); cmd.addICmdOption("-facemodel", &facemodel_id, 2, "facemodel (1=15x20, 2=19x19)"); cmd.addRCmdOption("-jesorsky", &J, 0.25, "Jesorsky threshold"); cmd.addBCmdOption("-verbose", &verbose, false, "verbose"); cmd.read(argc, argv); Allocator *allocator = new Allocator; // DiskXFile *pos_file = new DiskXFile(posfilename, "r"); Point2D l_eye; Point2D r_eye; // IDIAP format real x, y; pos_file->scanf("%f", &x); pos_file->scanf("%f", &y); l_eye.x = x; l_eye.y = y; pos_file->scanf("%f", &x); pos_file->scanf("%f", &y); r_eye.x = x; r_eye.y = y; delete pos_file; print(" + Eyes: (%.1f-%.1f) - (%.1f-%.1f)\n", l_eye.x, l_eye.y, r_eye.x, r_eye.y); // FaceModel *face_model = NULL; if(facemodel_id == 1) { message("Using 15x20 face model."); face_model = new(allocator) FrontalFace15x20(1); } else if(facemodel_id == 2) { message("Using 19x19 face model."); face_model = new(allocator) FrontalFace19x19(1); } else error("face model %d unknown", facemodel_id); face_model->setBOption("verbose", false); pos_file = new DiskXFile(posfilename, "r"); face_model->loadXFile(pos_file); delete pos_file; face_model->ldm2bbx(); Point2D BBX0(face_model->bbx_points[0]); Point2D BBX1(face_model->bbx_points[1]); Point2D BBX2(face_model->bbx_points[2]); Point2D BBX3(face_model->bbx_points[3]); print(" + BBX: %s %s %s %s (%dx%d)\n", BBX0.sprint(), BBX1.sprint(), BBX2.sprint(), BBX3.sprint(), face_model->bbx_width, face_model->bbx_height); jesorskyGTMeasurer *jesorsky = new(allocator) jesorskyGTMeasurer(face_model, true, J); jesorsky->setBOption("verbose", verbose); jesorsky->load(posfilename); message("Measure with GT"); real the_measure; jesorsky->measure(4, face_model->bbx_points, &the_measure); // Rectangle2D rect(x_corner, y_corner, width, height); sPoint2D bbx[4]; bbx[0] = rect.P0.get(); bbx[1] = rect.P1.get(); bbx[2] = rect.P2.get(); bbx[3] = rect.P3.get(); print(" + RECT: %s\n", rect.sprint()); message("Measure with input:"); jesorsky->measure(4, bbx, &the_measure); delete allocator; return(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -