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

该示例示出了如何使用MATLAB®编码器™生成C代码为MATLAB函数,它使用stereoParameters目的是通过立体相机校准器的应用程序或所产生的estimateCameraParameters功能。这个例子说明如何修改MATLAB代码中深度估计从立体声视频例如支持代码生成。万博1manbetx

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

代码生成

您可以了解如何使用MATLAB®编码器代码生成的基本™从介绍代码生成与特征匹配和注册例。

重组MATLAB代码C代码生成

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

这为从MATLAB代码,它使用生成的代码有问题cameraParameters要么stereoParameters对象,在照相机校准过程中提前通常创建。为了解决这个问题,可以使用toStruct()方法来转换cameraParameters或者stereoParameters对象转换为结构体。然后该结构可以被传递到所生成的代码。

对于主要算法重组代码深度估计从立体声视频例如驻留在一个函数调用depthEstimationFromStereoVideo_kernel.m。注意depthEstimationFromStereoVideo_kernel是采用一个结构的功能从所创建的stereoParameters目的。另请注意,它不显示重建的3 d点云,因为showPointCloudFunction不支持代码生成。万博1manbetx

加载立体摄像机的参数

加载stereoParameters对象,这是使用校准照相机的结果要么stereoCameraCalibrator应用程序或estimateCameraParameters功能。

%加载stereoParameters对象。加载('handshakeStereoParams.mat');%可视化相机外部参数。showExtrinsics(stereoParams);%将对象转换成一个结构,其可被传递到产生%的代码。stereoParamsStruct = toStruct(stereoParams);

解压缩视频文件

在Macintosh上,VideoReader不支持代码生成读取压缩视万博1manbetx频。解压缩的视频文件,并将其存储在临时目录中。

如果的strcmp(计算机(),'MACI64'%解压缩左视频。videoFileLeft ='handshake_left.avi';读者= VideoReader(videoFileLeft);作家= vision.VideoFileWriter(videoFileLeft);hasFrame(读取器)帧= readFrame(读取器);步骤(写入器,帧);结束释放(读取器);释放(作家);%解压合适的视频。videoFileRight ='handshake_right.avi';读者= VideoReader(videoFileRight);作家= vision.VideoFileWriter(videoFileRight);hasFrame(读取器)帧= readFrame(读取器);步骤(写入器,帧);结束释放(读取器);释放(作家);结束

编译MATLAB函数转换成一个MEX文件

使用代码生成功能编译depthEstimationFromStereoVideo_kernel功能成MEX文件。你可以指定“-report”选项生成编译报告显示原始MATLAB代码并进行了C代码生成过程中产生的相关的文件。您可能希望创建一个临时目录,MATLAB编码器可存储生成的文件。注意,生成的MEX文件具有相同的名称与_mex原来的MATLAB文件附加,除非你使用-o选项来指定可执行文件的名称。

MATLAB编码器需要您指定的所有输入参数的属性。一个简单的方法做,这是在使用-args选项命令行,以限定通过例子中的输入特性。更多信息请参见通过定义实例输入属性在命令行(编码器MATLAB)。

compileTimeInputs = {coder.typeof(stereoParamsStruct)};%生成代码。代码生成depthEstimationFromStereoVideo_kernel-argscompileTimeInputs;

运行生成的代码

玩家= vision.VideoPlayer('位置'[100 200 750 560]);eofReached = FALSE;〜eofReached [eofReached,dispFrame] = depthEstimationFromStereoVideo_kernel_mex(stereoParamsStruct);%握住最后一帧。如果〜eofReached步骤(播放器,dispFrame);结束结束

清理

明确depthEstimationFromStereoVideo_kernel_mex;释放(播放器);

摘要

这个例子说明了如何从MATLAB代码C代码,需要一个cameraParametersstereoParameters对象作为输入。