问题叙述:我准备编写一个使用Matlab与c的混合程序,用于图像处理。但是,编写代码的过程中,出现了2个问题。第一个问题是,通过mex文件读取并返回的图像数据,数值有问题。第二个问题是,这个混合程序,第一次运行Matlab脚本文件没有报错,但是第二次运行时,Matlab会弹出出错的对话框。我刚刚接触Matlab与c的混合编程,不知道如何解决这两个问题。因此,我编写了一个简化版的程序,只是用于读取一幅灰度图像数据,然后返回这幅灰度图像的数据。这个简化版的程序,也存在上述的两个问题,恳请大家帮我看看这个程序,如何解决这两个问题,先谢谢啦。简化版程序的代码如下所示。
我的Matlab脚本文件如下:
% mex读取图像数据
close all
clear
clc
input_image = imread('Lena.bmp'); % 读入灰度图像;
mex test.cpp;
image_result = test(input_image);
我的c程序如下:
#include
#include "mex.h"
/* 输入参数 */
#define image_IN prhs[0]
/* 输出参数 */
#define image_OUT plhs[0]
static void test(
double * result,
double * input,
int M,
int N)
{
int i;
int j;
for(j=0; j
{
for(i=0; i
{
result[i+j*M] = input[i+j*M];
}
}
return;
}
void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray*prhs[] )
{
double *result;
double *input;
mwSize M,N;
M = mxGetM(image_IN);
N = mxGetN(image_IN);
image_OUT = mxCreateDoubleMatrix(M, N, mxREAL);
result = mxGetPr(image_OUT);
input = mxGetPr(image_IN);
test(result, input, M, N);
return;
}