2012-11-09 74 views
11

我需要使用MATLAB圖像採集工具箱從攝像機採集一些圖片。 MATLAB似乎是一個很好的解決方案,因爲圖像採集很容易,我必須在事後做一些圖像處理。我已經搜索了很長時間,但我仍然沒有發現任何工作。從蟒蛇運行MATLAB腳本+通過ARGS

有一些嘗試:


mlabwrap 1.1 - 運行MATLAB腳本:

MATLAB腳本,如:

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

您可以通過運行該腳本:

mlab.run('script.m') 

但是,在這裏傳遞一些參數(目錄,圖像描述等)? 我還沒有發現因爲mlabwraps紀錄片差的東西。 我用mlab.lookfor( '感興趣的主題')函數沒有成功


mlabwrap 1.1 - 圖像通過使用MLAB功能acqusisition:

乍一看沒有可能讀出一個 「視頻輸入對象」,沒有功能,例如:

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

蟒-m的ATLab的橋

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

我有Windows7的64位作爲操作系統。他們說,它只能在unix上工作。


Nipype

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

似乎是非常新的。我沒有試圖安裝它。這似乎是適合我的問題,但不適用於Windows,我猜。


PyMAT

沒有Python 2.7版支持


那麼,有沒有人誰可以幫我嗎?

+0

我只是想pymatlab,我可以在Windows中一些補丁運行它(HTTP:// sourceforge上.net/p/pymatlab/tickets/1 /)但在我的情況下,我有數據類型維度的問題(到目前爲止,它只適用於字符串) – lib

回答

12

雖然我對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蟒蛇此功能,在字符串傳遞的函數的參數。所有Matlab函數(包括用戶定義的函數)都可以從mlabwrap.mlab模塊獲得。

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

mlabwrap會將您的字符串轉換爲Matlab可讀的格式,並將它們作爲參數傳遞給您的函數。如果提出AttributeError,那通常意味着你的函數不在Matlab路徑上。您可以使用以下命令添加:

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

就像一個謹慎注意,mlabwrap會自動將一些參數類型,如字符串或numpy的陣列來回Python和Matlab的。但是,它有很多類型,例如Matlab結構和類,它不能轉換。在這種情況下,它將從Matlab函數返回一個MLabObjectProxy。這些代理對象不能在Python中操作或轉換爲Python類型,但可以通過mlabwrap成功傳遞到其他Matlab函數中。通常,對於具有複雜輸出的函數,最好將輸出寫入Matlab函數中的文件,並從Python文件中導入數據。 祝你好運!

4
  1. Python/OpenCV:您可以使用本機解決方案從您的視頻設備獲取圖像。藉助OpenCV,您甚至可以進行實時圖像處理。
  2. matlab_wrapper:假設您有一個MATLAB 函數(不是腳本),它接受某些參數並返回圖像數組,例如, [img] = get_image(some_parameter),你可以寫這樣的事情:
matlab = matlab_wrapper.MatlabSession() 
img = matlab.workspace.get_image(some_parameter) 

免責聲明:我matlab_wrapper筆者