как вызвать imresize в mex файле (MATLAB) - PullRequest
4 голосов
/ 14 апреля 2011

Я написал следующий код для использования функции imresize в mex-файле.

   #include "mex.h"

  void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])
  {
mxArray *output[1];
mxArray *input[3];

input[0] = prhs[0];
input[1] = mxCreateDoubleMatrix(1, 1, mxCOMPLEX);
double *x = mxGetPr(input[1]);
x[0] = 0.5;

//double *p = mxGetPr(input[1]);
//mexPrintf("%f\n", p[0]);
input[2] = mxCreateString("bilinear");



mexCallMATLAB(0, NULL, 1, &prhs[0], "imshow");
mexCallMATLAB(1, output, 3, input, "imresize");
mexCallMATLAB(0, NULL, 1, &output[0], "imshow");    
    }

выдает ошибку: Function IMRESIZE expected its second input, SCALE, to be nonzero. как это исправить?

1 Ответ

1 голос
/ 09 мая 2013

Так что попробуйте заменить следующий код:

input[1] = mxCreateDoubleMatrix(1, 1, mxCOMPLEX);
double *x = mxGetPr(input[1]);
x[0] = 0.5;

на эту строку

 input[1]=mxCreateDoubleScalar(0.5);
...