2012-11-09 13 views
11

मुझे वीडियो कैमरा से कुछ छवियां प्राप्त करने के लिए MATLAB छवि अधिग्रहण टूलबॉक्स का उपयोग करने की आवश्यकता है। MATLAB एक अच्छा समाधान प्रतीत होता है क्योंकि छवि अधिग्रहण आसान है और मुझे बाद में कुछ छवि प्रसंस्करण करना है। मैंने लंबे समय से खोज की है लेकिन मुझे अभी भी कुछ भी काम नहीं मिला है।पायथन + पास तर्क से MATLAB स्क्रिप्ट चलाएं

कुछ की कोशिश करता थे:


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') 

अजगर-मीटर atlab-पुल

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

मैं ओएस के रूप में Windows 7 64 बिट मिल गया है। वे कहते हैं, यह केवल यूनिक्स पर काम कर रहा है।


Nipype

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

बहुत नया होने के लिए लगता है। मैंने इसे स्थापित करने की कोशिश की है। ऐसा लगता है कि मेरी समस्या के लिए उपयुक्त है लेकिन खिड़कियों के लिए नहीं, मुझे लगता है।


PyMAT

कोई अजगर 2.7 समर्थन


तो वहाँ है किसी को भी मेरी मदद कर सकते?

+0

मैं सिर्फ कोशिश की pymatlab, मैं इसे खिड़कियों में कुछ पैच के साथ चला सकते हैं (http: // sourceforge .NET/p/pymatlab/टिकट/1 /) लेकिन मेरे मामले में मुझे डेटा प्रकार आयामों में समस्याएं हैं (अब तक यह केवल तारों के साथ काम करता है) – lib

उत्तर

12

जबकि मैं अजगर-मैटलैब-पुल, निपइप या पीईएमएटी से बहुत परिचित नहीं हूं, मैंने मैलाब्राप के साथ एक उचित मात्रा में काम किया है, और मैं उस पैकेज के संबंध में आपके प्रश्न का प्रयास करूंगा और जवाब दूंगा ।

सबसे पहले, यदि आप स्क्रिप्ट के बजाय कार्यों के संदर्भ में काम करते हैं तो यह बहुत आसान होगा।के, myFunction.m में इतनी तरह एक समारोह के रूप में अपने Matlab स्क्रिप्ट फिर से पात्र चयन करते हैं:

function myFunction(v_input, directory, file_name) 

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

फिर आप mlabwrap.mlab का उपयोग कर अजगर से इस समारोह कॉल कर सकते हैं, समारोह तर्क के लिए तार गुजर रहा। के रूप में mlabwrap.mlab मॉड्यूल से जिम्मेदार बताते उपयोगकर्ता परिभाषित कार्यों सहित सभी मैटलैब काम करता है, उपलब्ध हैं।

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

mlabwrap एक मैटलैब पठनीय प्रारूप में अपने तार कनवर्ट करते हैं, और उन्हें तर्क के रूप में अपने कार्य करने के लिए पारित करेंगे। यदि AttributeError उठाया गया है, तो आमतौर पर इसका अर्थ है कि आपका फ़ंक्शन Matlab पथ पर नहीं है। आप आदेश के साथ जोड़ सकते हैं:

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

बस एक चेतावनीपूर्ण नोट के रूप में, mlabwrap स्वचालित रूप से इस तरह के तार या NumPy सरणी के आगे और पीछे अजगर और Matlab के बीच के रूप में कुछ तर्क प्रकार, परिवर्तित कर देंगे। हालांकि, कई प्रकार हैं, जैसे कि मैटलैब स्ट्रक्चर और कक्षाएं, जो इसे परिवर्तित नहीं कर सकती हैं। इस मामले में, यह Matlab फ़ंक्शन से MLabObjectProxy वापस कर देगा। इन प्रॉक्सी ऑब्जेक्ट्स को पायथन में घुमाया नहीं जा सकता है या पाइथन प्रकार में परिवर्तित नहीं किया जा सकता है, लेकिन इसे अन्य मैटलैब फ़ंक्शंस में सफलतापूर्वक मैलाब्राप के माध्यम से पारित किया जा सकता है। अक्सर, जटिल उत्पादन के साथ कार्यों के लिए, यह बेहतर मैटलैब समारोह के भीतर एक फाइल करने के लिए है कि उत्पादन लिखते हैं, और अजगर की ओर फ़ाइल से डेटा आयात करने के लिए है। शुभकामनाएँ!

4
  1. पायथन/ओपनसीवी: आप अपने वीडियो डिवाइस से छवियों को प्राप्त करने के लिए मूल समाधान का उपयोग कर सकते हैं। ओपनसीवी के साथ आप रीयल-टाइम छवि प्रसंस्करण भी कर सकते हैं।
  2. matlab_wrapper: यह मानते हुए कि आपके पास MATLAB फ़ंक्शन (स्क्रिप्ट नहीं) है जो कुछ पैरामीटर स्वीकार करता है और छवि सरणी देता है, उदा।
matlab = matlab_wrapper.MatlabSession() 
img = matlab.workspace.get_image(some_parameter) 

अस्वीकरण:: [img] = get_image(some_parameter), तो आप इस तरह कुछ लिख सकता है मैं matlab_wrapper के लेखक हूँ

संबंधित मुद्दे