/* compile with rm liblagrcv.a gcc -c lagrcv.cpp ar rc liblagrcv.a lagrcv.o ranlib liblagrcv.a mex7 calcTextureMex.cc -L/home/ikkjin/LagrMatlab/opencv/matlab -llagrcv -I/home/ikkjin/LagrMatlab/opencv/matlab/ */ #include "mex.h" #include "lagrcv.h" #include #include #ifndef MAX_LEVEL # define MAX_LEVEL 5 #endif // TODO: add number of corners parameter void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { // usage: [newFeaturePnt validFlag ] = // calcOptFlowLKPyrWInitMex2(Ipyr, Jpyr, featurePnt, winSize, accuracy_th, max_iter, initFPnt) // Ipyr, IdxPyr, IdyPyr, Jpyr: levelx1 size cell. // featurePnt 2xn int // winSize c_level int // c_xx c_xy c_yy: image size double* // image must be double const mxArray* imgArray; int* imdims; const int *curImgDims; const int *nFeatures; double *iP[MAX_LEVEL], *jP[MAX_LEVEL]; double *fPnt, *newFPnt, *initFPnt; char* valid; double accuracy_th; int winSize, max_iter; const int *cellDims = mxGetDimensions(prhs[0]); accuracy_th=(double)mxGetScalar(prhs[4]); max_iter=(int)mxGetScalar(prhs[5]); initFPnt=(double*)mxGetPr(prhs[6]); winSize = (int)mxGetScalar(prhs[3]); fPnt=(double*)mxGetPr(prhs[2]); nFeatures=mxGetDimensions(prhs[2]); imdims=(int*)malloc(sizeof(int)*cellDims[0]*2); for(int i=0; i