如何让 MatLab object 在 python 中通过 sys.argv[1]?

How to get MatLab object to go through sys.argv[1] in python?

我正在尝试让 NAO 人形机器人识别 objects。我在 MatLab 中使用卷积神经网络 (CNN) 对通过机器人捕获的 object 进行分类。我写了两个单独的 python 脚本:一个通过机器人拍照并将其保存为 .png 文件,第二个让机器人通过 speechProxy 说出 object 的标题(来自 ALProxy 库)。第一个脚本运行良好,能够根据需要与 MatLab 通信。我对 运行 python 脚本使用了以下命令,读取作为结果创建的 .png,裁剪图像,然后对其进行分类:

system('python "TakePhoto.py path"'); %running the TakePhoto python script
im = imread('object.png path'); %reading the .png file
im = imresize(im,[224 224]); %resizing the .png to the desired dimensions
label = classify(net,im); %classifying the object capture
image(im); %outputting the image in the given dimensions
title(char(label)); %showing the label at the top of the output

我的 MatLab 脚本的这一部分工作正常,因为我能够仅通过 运行 脚本对 object 进行分类,并将 object 放在机器人的视图中。我拥有的另一个脚本应该能让机器人说出 object 的标签,但我不确定如何让 python 脚本说出来自 MatLab 输出的标签。

下面的 Python 代码片段是我需要让机器人说出标签的代码。

speechProxy.say("This object is a " + sys.argv[1])

现在的问题是从 MatLab 获取系统参数。我在 MathWorks 网站上搜索过,他们说传递系统参数应该按如下方式完成

system('python','python_script_path',argument) %assuming argument is an object of certain datatype

我已经用我各自的参数和 python scripts/path 尝试了这种类型的语法,但我得到了一个错误。如果您参考我显示 MatLab 脚本的第一段代码,传递参数的语法如下所示:

system('python "speakObject.py path"', label);

但这会导致错误。最终,我在获取 MatLab 脚本和第二个 Python 脚本进行通信时遇到了问题。如何获取 .png 的标签分类作为系统参数传递给 python,以便机器人可以说出 object 的身份?

你可能想试试

strCommand = sprintf('python speakObject.py %s', label);
system(strCommand);