【问题标题】:how to call imresize in mex file(MATLAB)如何在 mex 文件中调用 imresize(MATLAB)
【发布时间】:2011-04-13 21:43:41
【问题描述】:

我已经编写了以下代码以在 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");    
    }

它给出一个错误:Function IMRESIZE expected its second input, SCALE, to be nonzero. 我该如何解决?

【问题讨论】:

  • 输入[1] = mxCreateDoubleMatrix(1, 1, mxCOMPLEX);将 mxCOMPLEX 替换为 mxREAL。然后一切都很好。
  • 这是您在将复杂比例传递给 imresize 时收到的特殊错误消息。我向图像处理工具箱团队报告了它。
  • @FihopZz 您能否发表您的评论作为答案,否则问题将保持开放。

标签: matlab mex


【解决方案1】:

所以只需尝试替换以下代码:

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

用这条线

 input[1]=mxCreateDoubleScalar(0.5);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2015-07-09
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多