public bool track(Mat im, FaceTrackerParams p) { if (points.Count <= 0) { return(false); } //convert image to greyscale Mat gray = null; if (im.channels() == 1) { gray = im; } else { gray = new Mat(); Imgproc.cvtColor(im, gray, Imgproc.COLOR_RGBA2GRAY); } //initialise // if (!tracking) // points = detector.detect (gray, p.scaleFactor, p.minNeighbours, p.minSize); for (int i = 0; i < points.Count; i++) { if (points [i].Length != smodel.npts()) { return(false); } //fit for (int level = 0; level < p.ssize.Count; level++) { points [i] = fit(gray, points [i], p.ssize [level], p.robust, p.itol, p.ftol); } } return(true); }