当前位置: 首页 > 面试题库 >

从python +通过args运行MATLAB脚本

吴山
2023-03-14
问题内容

我期待从Python的MATLAB。我需要使用MATLAB Image Acquisition Toolbox从摄像机获取少量图像。

MATLAB似乎是一个不错的解决方案,因为图像采集很容易,之后我必须做一些图像处理。我已经搜索了很长时间,但仍然没有找到任何可用于Python的方法。

这是我的一些尝试:

mlabwrap 1.1-运行MATLAB脚本:

MATLAB脚本如下:

vid = videoinput('testadaptor');
img = getsnapshot(vid);
imwrite(img,'./image.png','png');

您可以使用以下命令运行此脚本:

mlab.run('script.m')

但是,在哪里传递一些参数(目录,图像描述等)?由于mlabwraps纪录片不佳,我什么也没找到。我没有成功使用mlab.lookfor(’theme of
interest’)函数

mlabwrap 1.1-通过使用mlab函数获取图像:

乍一看,不可能读出“视频输入对象”,没有诸如以下的功能:

image = getsnapshot(video input object)
imwrite(image,'directiory\image.png','png')

python-matlab-bridge

https://github.com/jaderberg/python-matlab-
bridge

我有Windows7 64位操作系统。他们说,它仅适用于Unix。

尼培

http://nipy.sourceforge.net/nipype/api/generated/nipype.interfaces.matlab.html

似乎很新。我还没有尝试安装它。我想这似乎适合我的问题,但不适合Windows。

PyMAT

不支持python 2.7

那么有没有人可以帮助我?


问题答案:

虽然我对python-matlab-
bridge,Nipype或PyMAT不太熟悉,但是我已经对mlabwrap做了大量的工作,并且我将尽力回答关于该软件包的问题。

首先,如果您使用功能而不是脚本来工作,将会容易得多。让我们将Matlab脚本重播为一个函数,myFunction.m如下所示:

function myFunction(v_input, directory, file_name)

    vid = videoinput(v_input);
    img = getsnapshot(vid);
    location = [directory file_name]
    imwrite(img, location,'png');

然后,您可以使用mlabwrap.mlab,从python调用此函数,为函数参数传入字符串。所有Matlab函数(包括用户定义的函数)都可以作为属性从mlabwrap.mlab模块中获得。

>>> from mlabwrap import mlab
>>> mlab.myFunction('testadaptor', './', 'image.png')

mlabwrap会将您的字符串转换为Matlab可读的格式,并将其作为参数传递给您的函数。如果AttributeError引发,通常意味着您的函数不在Matlab路径上。您可以使用以下命令添加它:

>>> mlab.path(mlab.path(), 'C:\function\directory')

提醒您,mlabwrap会自动在Python和Matlab之间来回转换某些参数类型,例如字符串或numpy数组。但是,有许多类型无法转换,例如Matlab结构和类。在这种情况下,它将MLabObjectProxy从Matlab函数返回an
。这些代理对象无法在Python中操作或转换为Python类型,但可以通过mlabwrap成功传递到其他Matlab函数中。通常,对于具有复杂输出的函数,最好将该输出写入Matlab函数中的文件,并在Python端从该文件导入数据。祝好运!



 类似资料:
  • 我在Hue中使用oozie编辑器调用一个bash shell脚本。 我使用了工作流中的shell操作,并在shell命令中的不同选项下面进行了尝试: null 无法运行程序“sec_test_oozie.sh”(在目录“/data/hadoop/yarn/local/usercache/user/appcache/application_1399542362142_0086/container_1

  • 问题内容: 是否有任何聪明的方法可以通过ssh在远程主机上运行本地Bash功能? 例如: 是的,我知道这行不通,但是有办法实现吗? 问题答案: 您可以使用该命令通过来使功能在远程计算机上可用。有多个选项,具体取决于您要如何运行远程脚本。 要在远程主机上使用该功能: 更好的是,为什么还要麻烦管道: 或者,您可以使用HEREDOC: 如果要发送脚本中定义的所有函数,而不仅仅是发送,请像这样使用: 说明

  • 我在两个Python脚本之间进行通信时遇到一些问题。我对python和raspberry pi是相当陌生的,我已经发现了多种方法,经过一段时间的理解,这些方法对我来说是无用的。所以在花了几个小时之后,我想最好问问更有经验的人。 所以我正在做一个项目,我使用一个网页来通过多个覆盆子派控制多台机器。(4个覆盆子)您可以在网页上输入机器以及机器应该激活多长时间。然后,网页使用机器和时间执行Python脚

  • 问题内容: 我想从PHP运行Python脚本。该脚本的语法很好,当我从命令行运行它时,它会在它旁边生成一个图像文件。当我从命令行运行PHP文件(包含Python exec)时,它将生成一个图像文件。很好。问题是:当我使用浏览器并运行PHP时,它不会生成任何图像文件。我使用的是Xubuntu OS。 问题答案: 问题是matplotlib后端设置。我更改为“ Agg”,并且plot函数正常运行。

  • 问题内容: 我正在尝试使用Linux crontab执行python脚本。我想每10分钟运行一次此脚本。 我找到了很多解决方案,但都无济于事。例如:在/etc/cron.d中编辑anacron或使用。我将此行放在文件的末尾,但它没有任何改变。我需要重启任何服务吗? 我必须编辑哪个文件来配置它? 提前致谢 这是脚本。 问题答案: 只需使用并按照此处的教程操作即可。 请参阅第3点,以获取有关如何指定频

  • 问题内容: 之前曾在不同程度上提出过这样的问题,但我觉得还没有以简明的方式回答,因此我再次提出。 我想在Python中运行脚本。可以说是这样的: 它获取文件位置,读取它,然后打印其内容。没那么复杂。 好吧,那我该如何在C#中运行它呢? 这就是我现在所拥有的: 当我传递位置和位置无效时。有人告诉我,我应该通过的,然后作为。 我已经寻找了一段时间,只能找到建议使用IronPython或类似工具的人。但