matlab 处理图像时崩溃,Matlab与c混合编程,处理图像,返回结果有误且程序崩溃...

博主在尝试使用Matlab与C语言混合编程进行图像处理时遇到了两个问题:一是通过mex文件读取的图像数据数值不正确,二是程序在第二次运行时出现错误。为了解决这些问题,博主分享了简化版的代码,包括Matlab脚本和C程序,用于读取灰度图像数据。现寻求社区帮助,希望找到解决方案。
摘要由CSDN通过智能技术生成

问题叙述:我准备编写一个使用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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值