主要内容

代码生成的深度估计立体视频

这个例子展示了如何使用MATLAB®编码器™为MATLAB函数,生成C代码使用stereoParameters对象由立体相机或校准器应用estimateCameraParameters函数。这个例子解释了MATLAB代码如何修改深度估计从立体视频例子来支持代码生成。金宝app

这个例子需要MATLAB编码器许可证。

代码生成

你可以学习基本的代码生成使用MATLAB®编码器™的介绍代码生成功能匹配和登记的例子。

重组的MATLAB代码C代码生成

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

这提出了一个问题从MATLAB代码生成代码,它使用cameraParametersstereoParameters对象,这在相机校正通常提前创建。要解决这个问题,可以使用toStruct ()方法将cameraParameters或者是stereoParameters对象到一个结构体。结构体可以传递到生成的代码。

的重组代码的主要算法深度估计从立体视频例子驻留在一个函数调用depthEstimationFromStereoVideo_kernel.m。请注意,depthEstimationFromStereoVideo_kernel是一个函数,它接受一个struct创建从一个吗stereoParameters对象。还请注意,它并不显示重建的三维点云,因为showPointCloudFunction不支持代码生成。金宝app

负载立体相机的参数

加载stereoParameters对象,该对象的结果校准相机使用stereoCameraCalibrator应用程序或estimateCameraParameters函数。

%加载stereoParameters对象。负载(“handshakeStereoParams.mat”);%可视化相机外在。showExtrinsics (stereoParams);%将对象转换成一个结构体,可以传递到生成的%的代码。stereoParamsStruct = toStruct (stereoParams);

解压缩的视频文件

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

如果比较字符串(计算机(),“MACI64”)%解压左侧视频。videoFileLeft =“handshake_left.avi”;读者= VideoReader (videoFileLeft);作家= vision.VideoFileWriter (videoFileLeft);hasFrame(读者)帧= readFrame(读者);步骤(作家,框架);结束释放(读者);释放(作家);%解压正确的视频。videoFileRight =“handshake_right.avi”;读者= VideoReader (videoFileRight);作家= vision.VideoFileWriter (videoFileRight);hasFrame(读者)帧= readFrame(读者);步骤(作家,框架);结束释放(读者);释放(作家);结束

编译成一个墨西哥人文件的MATLAB函数

使用codegen函数编译depthEstimationFromStereoVideo_kernel函数MEX-file。您可以指定“报告”选项来生成一个编译报告显示原始的MATLAB代码和相关的文件中创建C代码生成。您可能想要创建一个临时目录,MATLAB编码器可以存储生成的文件。注意,生成MEX-file具有相同的名称作为原始MATLAB与_mex附加文件,除非您使用- o选项来指定可执行文件的名称。

MATLAB编码器要求您指定属性的所有输入参数。一个简单的方法是定义输入属性的例子使用参数的命令行选项。更多信息见在命令行定义输入属性的例子(MATLAB编码器)

compileTimeInputs = {coder.typeof (stereoParamsStruct)};%生成代码。codegendepthEstimationFromStereoVideo_kernelarg游戏compileTimeInputs;

运行生成的代码

球员= vision.VideoPlayer (“位置”,(100 200 750 560));eofReached = false;~ eofReached [eofReached dispFrame] = depthEstimationFromStereoVideo_kernel_mex (stereoParamsStruct);%保存最后一帧。如果~ eofReached步骤(球员,dispFrame);结束结束

清理

清晰的depthEstimationFromStereoVideo_kernel_mex;释放(球员);

总结

这个例子展示了如何从MATLAB生成C代码需要的代码cameraParameters或者一个stereoParameters对象作为输入。