在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 (将#修改为@)