I'm going to guess that the code you posted an hour ago is the source of the problem:

Code:

void pre_filter_Computations(vector< vector<double> > radius(rows, vector<double>(cols) ),vector< vector<double> > theta(rows, vector<double>(cols) ),int cols,int rows);
Mat logGabor(vector< vector<double> > filter(rows, vector<double>(cols) ),Mat imfft,double r_o, double theta_o,double sigma_theta,vector< vector<double> >radius(rows, vector<double>(cols) ),vector < vector<double> >theta(rows,vector<double>(cols) ),int cols,int rows,double sigma_r,int *padSize);

These are not not well written prototypes because there are too many details. Let's forget about vector for a moment:

Code:

void pre_filter_Computations(array radius, array theta, int cols, int rows);
Mat logGabor (array filter, Mat imfft, double r_o, double theta_o, double sigma_theta, int cols, int rows, double sigma_r, int *padSize);

I took special care to emphasize the types of your parameters. When you write a parameter list, there only has to be enough information to identify the type. That means that you want to include the class name and the template instantiation, like this: "vector<vector<double> > paramName". If the type is constant, volatile, mutable, or whatever, you will modify the type accordingly. The rest of it is too much detail.

When you call your function, you will want to set up objects to act as arguments. Then you include their names, in order according to the parameter list, where you call.

I would also like to emphasize:

- that vectors can give you column- and row-size information
- it might be best to stick to one matrix type
- if you have a matrix type, it is likely optimized for mathematical programming
- and that vector is not the best math matrix