Exécuter un script MATLAB à partir de Python + passer des arguments
Je besoin pour utiliser le logiciel MATLAB Acquisition de l'Image de boîte à outils pour acquérir quelques images d'une caméra vidéo. MATLAB semble être une bonne solution, car l'Acquisition de l'Image est facile et je dois faire quelques traitement de l'image par la suite. J'ai cherché pendant un long moment mais je n'ai toujours rien trouvé de travail.
Il y avait quelques essais:
mlabwrap 1.1 - exécuter un MATLAB-script:
Un script MATLAB comme:
vid = videoinput('testadaptor');
img = getsnapshot(vid);
imwrite(img,'./image.png','png');
Vous pouvez exécuter ce script à l'aide de:
mlab.run('script.m')
Mais, où passer des arguments(répertoire, la description de l'image, etc)?
Je n'ai pas trouvé quoi que ce soit à cause de mlabwraps pauvres documentaire.
J'ai utilisé le mlab.lookfor (thème d'intérêt") la fonction sans succès
mlabwrap 1.1 - Image acqusisition en utilisant mlab fonctions:
À première vue, pas de possibilité de lire une "entrée vidéo de l'objet", pas de fonctions telles que:
image = getsnapshot(video input object)
imwrite(image,'directiory\image.png','png')
python-matlab-pont
https://github.com/jaderberg/python-matlab-bridge
J'ai Windows7 64 Bits de l'OS. Ils disent, à ses seul à travailler sur unix.
Nipype
http://nipy.sourceforge.net/nipype/api/generated/nipype.interfaces.matlab.html
Semble très nouvelle. Je n'ai pas essayé de l'installer. Il semble être à côté de mon problème, mais pas de windows, je suppose.
PyMAT
Pas de python 2.7 soutien
Donc, il y a quelqu'un qui peut m'aider?
source d'informationauteur user1812539
Vous devez vous connecter pour publier un commentaire.
Alors que je ne suis pas très familier avec python-matlab-pont, Nipype, ou PyMAT, j'ai fait une bonne quantité de travail avec mlabwrap, et je vais essayer de répondre à votre question en ce qui concerne le paquet.
Tout d'abord, il sera beaucoup plus facile si vous travaillez en termes de fonctions, au lieu de scripts. Laissez la refonte de votre script Matlab comme une fonction, dans
myFunction.m
comme suit:Vous pouvez ensuite appeler cette fonction à partir de python à l'aide de
mlabwrap.mlab
en passant dans les chaînes pour les arguments de la fonction. Toutes les fonctions Matlab, y compris les fonctions définies par l'utilisateur, sont disponibles en tant qu'attributs de lamlabwrap.mlab
module.mlabwrap permettra de convertir vos chaînes dans un Matlab-format lisible, et de les transmettre à votre fonction en tant qu'arguments. Si un
AttributeError
est élevé, cela signifie généralement que votre fonction n'est pas sur le Matlab chemin. Vous pouvez l'ajouter avec la commande:Comme une mise en garde, mlabwrap convertira automatiquement certains types d'arguments, tels que des chaînes ou des tableaux numpy et-vient entre Python et Matlab. Cependant, il existe de nombreux types, tels que Matlab les structures et les classes, qu'il ne peut pas convertir. Dans ce cas, il sera de retour une
MLabObjectProxy
de la fonction Matlab. Ces objets proxy ne peuvent pas être manipulés en Python ou en convertis en types de Python, mais peut être passé avec succès mlabwrap dans d'autres fonctions Matlab. Souvent, pour les fonctions complexes de sortie, il est préférable d'écrire que la sortie vers un fichier dans la fonction Matlab, et importer les données à partir du fichier sur le Python côté.Bonne chance!
[img] = get_image(some_parameter)
vous pouvez écrire quelque chose comme ceci:Disclaimer: je suis l'auteur de matlab_wrapper