【问题标题】:Unhandled exception at 0x74E9C9F1 in pa2sample.exe: 0xC0000005: Access violation executing location 0x00000000pa2sample.exe 中 0x74E9C9F1 处的未处理异常:0xC0000005:访问冲突执行位置 0x00000000
【发布时间】:2013-10-22 05:38:27
【问题描述】:

我正在尝试使用 VC++ MFC 2012 中的 MATLAB 函数来编辑图像。使用mwArray 时出现错误。这是我的代码:

BYTE* im=new BYTE();
ImgProc(1,mwArray (im),mwArray(img));

此代码将使用 MATLAB 函数将图像转换为灰度图像。 img 变量是指向图像缓冲区的 BYTE 指针。 im 变量是输出图像。

ImgProc 是一个 MATLAB 函数:

function im=ImgProc(x)
  im=rgb2gray(x);           //convert to grayscale image

这是ImgProc从MATLAB转换后的C++函数

ImgProc(int nargout, mwArray& im, const mwArray& x);

如果有人可以帮助我,我将不胜感激。我已经卡了 2 天了。

【问题讨论】:

    标签: matlab visual-c++ mfc matlab-deployment matlab-compiler


    【解决方案1】:

    你认为mwArray(img) 做了什么?你希望它如何做你想做的事?我看到的唯一单参数构造函数是:

    mwArray(const char* str)

    说明

    使用n = strlen(str) 创建一个mxCHAR_CLASS 类型的1×n 数组,并使用提供的字符串中的字符初始化该数组的数据。

    对于图像,您需要使用以下mwArray 构造函数来创建矩阵:

    mwArray(mwSize num_rows, mwSize num_cols, mxClassID mxID, mxComplexitycmplx)
    

    【讨论】:

    • 我想输出参数im也是如此。
    • 是的,我打算对此发表评论,但我认为它可能像 OpenCV 一样,输出参数由引擎分配。当您使用 MEX 文件中的 mexCallMATLAB 时,plhs 中的 mxArrays 会发生类似的情况。顺便说一句,恭喜你的黄金 matlab。
    • @chappjc 谢谢。你能为我解释一下 mwArray() 中的那些论点吗?
    • 查看 MATLAB 中的 mwArray 文档页面,或者如果您已登录,请访问 mathworks.com
    • @chappjc 不幸的是,我没有。 :(
    猜你喜欢
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多