void asef_initialze(AsefEyeLocator *asef, const char *file_name){ load_asef_filters(file_name, &asef->n_rows, &asef->n_cols, &asef->lrect, &asef->rrect, &asef->lfilter, &asef->rfilter); asef->lfilter_dft = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->rfilter_dft = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->image = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->image_tile = cvCreateMat(asef->n_rows, asef->n_cols, CV_8UC1); asef->lcorr = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->rcorr = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->lroi = cvCreateMatHeader(asef->n_rows, asef->n_cols, CV_32FC1); asef->rroi = cvCreateMatHeader(asef->n_rows, asef->n_cols, CV_32FC1); cvDFT(asef->lfilter, asef->lfilter_dft, CV_DXT_FORWARD, 0); cvDFT(asef->rfilter, asef->rfilter_dft, CV_DXT_FORWARD, 0); cvGetSubRect(asef->lcorr, asef->lroi, asef->lrect); cvGetSubRect(asef->rcorr, asef->rroi, asef->rrect); asef->lut = cvCreateMat(256, 1, CV_32FC1); for (int i = 0; i<256; i++){ cvmSet(asef->lut, i, 0, 1.0 + i); } cvLog(asef->lut, asef->lut); }
int asef_initialze(AsefEyeLocator *asef, const char *asef_file_name, const char *fd_file_name){ if ( !asef || !asef_file_name || !fd_file_name || strlen(asef_file_name)==0 || strlen(fd_file_name)==0) return -1; // For face detection: asef->face_detection_buffer = cvCreateMemStorage(0); asef->face_detection_classifier = fd_load_detector( fd_file_name ); if ( !asef->face_detection_classifier ) return -1; // For asef eye locator: if ( load_asef_filters(asef_file_name, &asef->n_rows, &asef->n_cols, &asef->lrect, &asef->rrect, &asef->lfilter, &asef->rfilter) ) return -1; asef->lfilter_dft = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->rfilter_dft = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->scaled_face_image_32fc1 = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->scaled_face_image_8uc1 = cvCreateMat(asef->n_rows, asef->n_cols, CV_8UC1); asef->lcorr = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->rcorr = cvCreateMat(asef->n_rows, asef->n_cols, CV_32FC1); asef->lroi = cvCreateMatHeader(asef->n_rows, asef->n_cols, CV_32FC1); asef->rroi = cvCreateMatHeader(asef->n_rows, asef->n_cols, CV_32FC1); asef->lut = cvCreateMat(256, 1, CV_32FC1); if ( !(asef->lfilter_dft && asef->rfilter_dft && asef->scaled_face_image_32fc1 && asef->scaled_face_image_8uc1 && asef->lcorr && asef->rcorr && asef->lroi && asef->rroi && asef->lut) ){ return -1; } cvDFT(asef->lfilter, asef->lfilter_dft, CV_DXT_FORWARD, 0); cvDFT(asef->rfilter, asef->rfilter_dft, CV_DXT_FORWARD, 0); cvGetSubRect(asef->lcorr, asef->lroi, asef->lrect); cvGetSubRect(asef->rcorr, asef->rroi, asef->rrect); for (int i = 0; i<256; i++){ cvmSet(asef->lut, i, 0, 1.0 + i); } cvLog(asef->lut, asef->lut); return 0; }
int ASEF_Algorithm::initialize() { if (load_asef_filters(haar_cascade_path, &n_rows, &n_cols, &lrect, &rrect, &lfilter, &rfilter)) return -1; lfilter_dft = cvCreateMat(n_rows, n_cols, CV_32FC1); rfilter_dft = cvCreateMat(n_rows, n_cols, CV_32FC1); scaled_face_image_32fc1 = cvCreateMat(n_rows, n_cols, CV_32FC1); scaled_face_image_8uc1 = cvCreateMat(n_rows, n_cols, CV_8UC1); lcorr = cvCreateMat(n_rows, n_cols, CV_32FC1); rcorr = cvCreateMat(n_rows, n_cols, CV_32FC1); lroi = cvCreateMatHeader(n_rows, n_cols, CV_32FC1); rroi = cvCreateMatHeader(n_rows, n_cols, CV_32FC1); lut = cvCreateMat(256, 1, CV_32FC1); point = cvCreateMat(1, 2, CV_32FC1); if (!(lfilter_dft && rfilter_dft && scaled_face_image_32fc1 && scaled_face_image_8uc1 && lcorr && rcorr && lroi && rroi && lut)) { return -1; } cvDFT(lfilter, lfilter_dft, CV_DXT_FORWARD, 0); cvDFT(rfilter, rfilter_dft, CV_DXT_FORWARD, 0); cvGetSubRect(lcorr, lroi, lrect); cvGetSubRect(rcorr, rroi, rrect); for (int i = 0; i < 256; i++) { cvmSet(lut, i, 0, 1.0 + i); } cvLog(lut, lut); isInitialized = true; return 0; }