如何在Mex文件(MATLAB)中调用imresize?

4
我已经编写了以下代码来在mex文件中使用imresize函数。
   #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");    
    }

它出现了错误:函数IMRESIZE期望其第二个输入SCALE为非零值。我该如何修复它?

7
输入[1] = mxCreateDoubleMatrix(1, 1, mxCOMPLEX);替换为mxCreateDoubleMatrix(1, 1, mxREAL)。然后一切都好了。 - Fihop
这是一个奇怪的错误消息,当您将复杂比例传递给imresize时会出现。我已向图像处理工具箱团队报告了此问题。 - SCFrench
@FihopZz,您能否将您的评论发布为答案,否则问题将保持开放状态。 - Dennis Jaheruddin
1个回答

1

所以尝试替换以下代码:

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

这句话的意思是:“带着这一行”。
 input[1]=mxCreateDoubleScalar(0.5);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接