我有一些在 Matlab 中工作的计算机视觉系统。当它检测到某些东西时,我想告诉 Python 它找到了它。只是是或否,没有任何附加信息,但系统在无限循环中工作,所以我希望 Python 以某种方式不断跟踪 Matlab。
我想知道最简单的方法是什么。
例如,Matlab 可以在桌面上创建一个文件,Python 将看到并触发相应的功能。
如果您需要持续快速的通信,我建议您让 Python 应用程序监听特定端口并从 MATLAB 连接到该端口。然后,您可以双向交换信息。
如果发现某些东西,Matlab 进程是否会以特定的退出代码退出?在这种情况下,只需使用退出代码。或者,只需让 Matlab 进程将其输出写入一个文件,然后您可以在 python 中创建一个观察程序来检测文件中的更改。
最简单的方法是让 Matlab 在找到某些内容时也创建一个空文件(除了输出文件本身)。然后,您可以使用os.path.exists()和time.sleep定期检查文件是否存在:
import os
import time
path='/path/to/file/created/by/matlab'
while not os.path.exists(path):
print("Matlab output file still not present. Waiting for 1 s and retrying...")
time.sleep(1)
print("Matlab process generated output. Now I can do what I want to do")
如果你不能更改matlab脚本,那么你可以看看mlabwrap,这是一个模块,你可以通过它通过python调用matlab。另请参阅此答案。