微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Simulink中将图像传入和传出c ++函数

如何解决在Simulink中将图像传入和传出c ++函数

我试图通过simulink中的函数传递图像。如果我直接将输入链接输出,则使用连接到输出端口的“到视频显示器”可以正确显示图像。但是,例如,如果我在函数中使用opencv加载图像,则在使用cv :: imshow()进行显示时它可以正确显示,但是在将To Video display连接到输出端口的情况下显示时会损坏:

enter image description here

很明显,我在设置端口方面有一个错误,但是看不到哪里:

static void mdlInitializeSizes(Simstruct *S)
{
    ssAllowSignalsWithMoreThan2D(S);

    int_T dims[3];
    DECL_AND_INIT_DimsINFO(inputDimsInfo);
    inputDimsInfo.numDims = DYNAMICALLY_SIZED;
    inputDimsInfo.width = DYNAMICALLY_SIZED;
    dims[0] = 400;
    dims[1] = 600;
    dims[2] = 3;
    inputDimsInfo.dims = dims;

    if (!ssSetNumInputPorts(S,NUM_INPUTS)) return;
    /* Input Port 0 */
    for (int i = 0; i < NUM_INPUTS; ++i) {
        inputDimsInfo.width = DYNAMICALLY_SIZED;
        ssSetInputPortDimensionInfo(S,&inputDimsInfo);
        //ssSetInputPortMatrixDimensions(S,INPUT_0_WIDTH,INPUT_Dims_0_COL);
        ssSetInputPortFrameData(S,IN_0_FRAME_BASED);
        //ssSetInputPortWidth(S,INPUT_0_WIDTH);
        ssSetInputPortDataType(S,SS_UINT8);
        ssSetInputPortComplexSignal(S,INPUT_0_COMPLEX);
        ssSetInputPortDirectFeedThrough(S,INPUT_0_FeedTHROUGH);
        ssSetInputPortrequiredContiguous(S,1); /*direct input signal access*/
    }

我尝试使用下面的代码行在行/列专业之间切换,但似乎没有任何作用:

ssSetArrayLayoutForCodeGen(S,SS_COLUMN_MAJOR);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。