无限while循环中的Matlab evalin

无限while循环中的Matlab evalin,matlab,Matlab,对于图像处理课程,我正在构建一个Matlab/C++应用程序。MATLAB应该识别手势,并且应该将它们发送到C++应用程序。我们的想法是在MATLAB中创建一个队列,我们可以从C++中读取。这非常有效,但我们有一个问题: 我们在无限的while循环中从网络摄像头获取数据。在该循环中,我们使用assignin('base',…)和evalin('base',…)将命令发送到工作区。但是,这些命令仅在循环完成后通过单击停止按钮发送。这意味着C++应用程序不能实时读取值,只能在停止图像处理之后读取值。

对于图像处理课程,我正在构建一个Matlab/C++应用程序。MATLAB应该识别手势,并且应该将它们发送到C++应用程序。我们的想法是在MATLAB中创建一个队列,我们可以从C++中读取。这非常有效,但我们有一个问题:

我们在无限的while循环中从网络摄像头获取数据。在该循环中,我们使用assignin('base',…)和evalin('base',…)将命令发送到工作区。但是,这些命令仅在循环完成后通过单击停止按钮发送。这意味着C++应用程序不能实时读取值,只能在停止图像处理之后读取值。 <> P> >是否有可能迫使MATLAB将变量写入到基本工作空间,以便我们可以从MATLAB中使用C++应用程序读取这些值? 编辑: 以下简要介绍了该程序的工作原理:

应用程序从C++应用开始。C++应用程序启动MATLAB引擎,调用MATLAB应用程序的初始化脚本。初始化脚本启动向导gui,按下按钮即可启动手势识别部分。Matlab应用程序的手势识别部分是一个无限while循环,它从网络摄像头输入中连续获取一帧并处理该图像。找到手势后,它使用evalin将手势ID写入基本工作区中的队列。同时,C++应用程序也在无限循环中,不断检查是否存在MATLAB队列中的项。但是,在Matlab脚本退出while循环之前,它不会找到任何项。


当我手动添加项目到队列中时,C++应用程序会立即读取这些值,而当我不使用while循环来连续捕获帧时,而是用手动获取单个帧的按钮时,C++应用程序也可以立即读取值。因此,while循环阻塞了C++应用程序读取队列。

值应该立即写入基本工作区,否则不能使用<代码> EVALIN < /代码>返回它。所以我想说你误诊了这个问题


你有一个简单的例子来强调这个问题吗?< /P> < P>我已经创建了一个简单的解决方案:我把所有的事情都放在while循环中,在一个分离的函数中,调用C++的每个帧更新的函数,而不是有2个独立的while循环。但是脚本之外的代码无法访问它们。我将在一分钟后的问题中添加一个简短的程序描述。