C++ 将图像传入和传出c++;Simulink中的函数
我试图在simulink中从SF函数传递一个图像。如果我直接将输入链接到输出,则使用连接到输出端口的to视频显示器正确显示图像。但是,例如,如果我在SF函数中使用opencv加载图像,则当使用cv::imshow()显示时,图像会正确显示,但当使用连接到输出端口的to视频显示器显示时,图像会损坏: 很明显,我在如何设置端口方面存在缺陷,但我看不到在哪里:C++ 将图像传入和传出c++;Simulink中的函数,c++,matlab,simulink,opencv3.0,s-function,C++,Matlab,Simulink,Opencv3.0,S Function,我试图在simulink中从SF函数传递一个图像。如果我直接将输入链接到输出,则使用连接到输出端口的to视频显示器正确显示图像。但是,例如,如果我在SF函数中使用opencv加载图像,则当使用cv::imshow()显示时,图像会正确显示,但当使用连接到输出端口的to视频显示器显示时,图像会损坏: 很明显,我在如何设置端口方面存在缺陷,但我看不到在哪里: static void mdlInitializeSizes(SimStruct *S) { ssAllowSignalsWithM
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, 0, &inputDimsInfo);
//ssSetInputPortMatrixDimensions(S, 0, INPUT_0_WIDTH, INPUT_DIMS_0_COL);
ssSetInputPortFrameData(S, 0, IN_0_FRAME_BASED);
//ssSetInputPortWidth(S, 0, INPUT_0_WIDTH);
ssSetInputPortDataType(S, 0, SS_UINT8);
ssSetInputPortComplexSignal(S, 0, INPUT_0_COMPLEX);
ssSetInputPortDirectFeedThrough(S, 0, INPUT_0_FEEDTHROUGH);
ssSetInputPortRequiredContiguous(S, 0, 1); /*direct input signal access*/
}
您是否尝试过将1D向量作为SF函数的输出?然后,可以将该向量重塑为m*n矩阵,该矩阵可以显示为图像。
ssSetArrayLayoutForCodeGen(S, SS_COLUMN_MAJOR);