我需要在Simulink中创建一个块来变形视频流 . 我为Simulink的'Interpreted MATLAB Fcn'块创建了这个代码:
function B = deformation(A,tform)
%#codegen
B=imwarp(A,tform);
对我来说现在的问题是:
-
如何创建块以提供作为结构的tform的输入
-
如何管理A,即Simulink中来自'From Video device'块的信号
我已经测试了静态图像的imwarp函数,并且我已经计算了tform值作为imwarp的输入
有没有一种方法来更新simulink块上的计算tform . 他们不应该改变
1 回答
在simulink中有3种方法可以使用Matlab函数 .
解释了Matlab函数
level 1 Matlab s-functions
level 2 Matlab s-functions
就个人而言,我既不喜欢1级功能也不喜欢Matlab功能 . 对于1级s函数,你必须告诉simulink你计划使用哪些函数,类似于include . 解释的Matlab函数是非常有限的,所以我建议你一个2级Matlab s函数,只要你打算做一些高级的东西 .
另外我建议您使用3维数组而不是结构,图片是x * y * 3数组,您可以在simulink块中使用它 . 您可以使用setInputDimension获取输入大小并根据您的意愿设置输出大小(2级s函数) .
此外,如果您的问题只是格式结构,您可以编写一个简单的脚本,将结构转换为三维数组,这对simulink来说没有问题(在这种情况下,您可以使用解释的matlab函数) .
最后:我很确定你不能使用结构在simulink块之间传递数据,除了你读写基础工作区,并且实际上你的块之间没有真正的信息传递 .
我希望这有点帮助 .