主要内容

关于立体视频深度估计的代码

此示例显示如何使用MATLAB®Coder™为Matlab函数生成C代码,该函数使用立体塔纳米仪由立体声相机校准器应用程序生产的对象或估计估计功能。该示例说明了如何修改MATLAB代码深度估计立体视频示例支持代码生成。金宝app

此示例需要Matlab编码器许可证。

代码生成

您可以使用MATLAB®Coder™了解代码生成的基础知识使用功能匹配和注册的代码生成简介例子。

重组MATLAB代码的C代码生成

Matlab编码器需要MATLAB代码以函数的形式以生成C代码。此外,函数的参数不能是MATLAB对象。

这提出了用于从MATLAB代码生成代码的问题,该代码使用Cameraparameters.要么立体塔纳米仪通常在相机校准期间预先创建的对象。要解决这个问题,请使用tostruct()转换方法的方法Cameraparameters.或者立体塔纳米仪对象进入结构。然后可以将结构传递到生成的代码中。

主要算法的重构代码深度估计立体视频示例驻留在一个调用的函数中DeposeStimationFromStereOvideo_kernel.m.。注意DewseStimationFromStereOvideo_kernel.是一个函数,它采用了从a创建的结构立体塔纳米仪目的。还要注意它不显示重建的3-D点云,因为showpointcloudfunction.不支持代码生成。金宝app

加载立体声相机的参数

加载立体塔纳米仪对象,这是使用校准相机使用的结果立体帕拉匹配剂应用程序或者估计估计功能。

%加载Stereoparameters对象。加载('handshakesteoparams.mat');%可视化相机外在。showextrinsics(默认帕拉姆);%将对象转换为结构,可以传递给生成的结构% 代码。Stereoparamsstruct = ToStruct(乳头帕拉姆);

解压缩视频文件

在Macintosh上,Videoreader不支持读取压缩视频的代码金宝app生成。解压缩视频文件,将它们存储在临时目录中。

如果Strcmp(computer(),'maci64'%解压缩左侧视频。Videofileleft =.'handshake_left.avi';读者= Videoreader(VideofileLeft);作家= Vision.videofileWriter(VideofileLeft);尽管Hasfame(读者)帧= ReadFrame(读者);步骤(作者,框架);结尾释放(读者);发布(作者);%解压缩右视频。VideoFileright =.'handshake_right.avi';读者= Videoreader(VideoFileright);作家= Vision.videofileWriter(VideoFileright);尽管Hasfame(读者)帧= ReadFrame(读者);步骤(作者,框架);结尾释放(读者);发布(作者);结尾

将MATLAB函数编译为MEX文件

使用codegen函数来编译DewseStimationFromStereOvideo_kernel.函数到MEX文件中。您可以指定“-report”选项以生成显示原始MATLAB代码和在C代码生成期间创建的关联文件的编译报告。您可能希望创建一个临时目录,其中Matlab编码器可以存储生成的文件。请注意,除非您使用-o选项指定可执行文件的名称,否则生成的MEX文件与_mex附加的原始MATLAB文件具有相同的名称。

MATLAB编码器要求您指定所有输入参数的属性。一种简单的方法是使用-args选项在命令行处定义输入属性。有关更多信息,请参阅按示例在命令行中定义输入属性(MATLAB编码器)

compiletimeInputs = {coder.typeof(stereoparamsstruct)};%generate代码。Codegen.DewseStimationFromStereOvideo_kernel.-  args.CompiletimeInputs.;

运行生成的代码

玩家= Vision.videoplayer('位置',[100 200 750 560]);eofrached = false;尽管〜eofReached [EofReached,Dispframe] = DeposeStimationFromStereOvideo_kernel_mex(立体索amsstruct);%持有最后一个框架。如果〜EofReached步骤(播放器,Dispframe);结尾结尾

清理

清除DeposEStimationFromStereOvideo_kernel_mex.;发布(播放器);

概括

此示例显示了如何从采用的MATLAB代码生成C代码Cameraparameters.或者立体塔纳米仪对象作为输入。