matlab

2012-04-04 8 views
5

में .yml फ़ाइलों को पढ़ें मैटलैब में .yml फ़ाइलों को पढ़ना चाहूंगा। इन फ़ाइलों में चेहरे की छवि पर मुख्य बिंदुओं के समन्वय x और y होते हैं। मैंने विभिन्न टूल्स की तलाश की लेकिन मुझे कोई जवाब नहीं दिख रहा है।matlab

मेरे .yml फ़ाइलें ...... इस

YAML:1.0 
Image file: "00032009.jpg" 
Contours count: 8 
Contours: 
    - 
     Name: FO 
     Count: 41 
     Closed: 0 
     Points: 
     - 
      x: 682.5947265625000000 
      y: 743.1998901367187500 
     - 
      x: 685.9638061523437500 
      y: 771.3800659179687500 

की तरह लग रहे

और इतने पर

नोट 00032009.jpg एक चेहरा x और y हैं की एक छवि है चेहरे पर एक बिंदु के निर्देशांक जैसे: आंखों का दायां कोने आदि

क्या आप फ़ाइल को पढ़ने के लिए एक तरीका बता सकते हैं और फिर चेहरे की छवि पर अंक प्रदर्शित कर सकते हैं?

संपादित करें 1: यहाँ त्रुटि है मैं

Error: File: ReadYamlRaw.m Line: 14 Column: 11 
Expression or statement is incorrect--possibly unbalanced (, {, or [. 
Error in ==> ReadYaml at 38 
    ry = ReadYamlRaw(filename, 0, nosuchfileaction); 

क्या अजीब है लाइन 14 ReadYamlRaw.m

[pth,~,~]= fileparts(mfilename('fullpath')); 

Parse error at ','(second one) and ']' usage appears to be invalid matlab syntax. 

तो वहाँ में ~ के उपयोग क्या है और क्यों है क्या कोई त्रुटि है?

EDIT2: मैं डमी चर के साथ ऊपर लाइन में ~ प्रतिस्थापित तो मैं इस त्रुटियों o_O

Error using ==> ReadYamlRaw>scan at 81 
Unknown data type: logical 

Error in ==> ReadYamlRaw>scan_map at 138 
      result.(ich) = scan(r.get(java.lang.String(ich))); 

Error in ==> ReadYamlRaw>scan at 79 
     result = scan_map(r); 

Error in ==> ReadYamlRaw>scan_list at 116 
     result{ii} = scan(i); 

Error in ==> ReadYamlRaw>scan at 77 
     result = scan_list(r); 

Error in ==> ReadYamlRaw>scan_map at 138 
      result.(ich) = scan(r.get(java.lang.String(ich))); 

Error in ==> ReadYamlRaw>scan at 79 
     result = scan_map(r); 

Error in ==> ReadYamlRaw>load_yaml at 48 
     result = scan(yaml.load(fileread([filename, fileext]))); 

Error in ==> ReadYamlRaw at 19 
    result = load_yaml(filename, nosuchfileaction); 

Error in ==> ReadYaml at 38 
    ry = ReadYamlRaw(filename, 0, nosuchfileaction); 

मैं भी एक अलग YML फ़ाइल है कि इस

%YAML:1.0 
RE-C: 
    x: 919 
    y: 580 
LE-C: 
    x: 1209 
    y: 597 
N-C: 
    x: 1063 
    y: 698 
FO-B: 
    x: 1045 
    y: 1114 
REL-O: 
    x: 852 
    y: 597 
REL-I: 
    x: 986 
    y: 600 
REL-T: 
    x: 918 
    y: 564 
तरह लग रहा है के साथ की कोशिश की मिल

और मुझे निम्न त्रुटियां मिलती हैं

Java exception occurred: 
while scanning a directive 
in "<string>", line 1, column 1: 
    %YAML:1.0 
    ^
expected alphabetic or numeric character, but found :(58) 
in "<string>", line 1, column 6: 
    %YAML:1.0 
     ^


    at org.yaml.snakeyaml.scanner.ScannerImpl.scanDirectiveName(ScannerImpl.java:1028) 

    at org.yaml.snakeyaml.scanner.ScannerImpl.scanDirective(ScannerImpl.java:990) 

    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchDirective(ScannerImpl.java:534) 

    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:251) 

    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:179) 

    at 
    org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:198) 

    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161) 

    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146) 

    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105) 

    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121) 

    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480) 

    at org.yaml.snakeyaml.Yaml.load(Yaml.java:399) 


Error in ==> ReadYamlRaw>load_yaml at 48 
     result = scan(yaml.load(fileread([filename, fileext]))); 

Error in ==> ReadYamlRaw at 19 
    result = load_yaml(filename, nosuchfileaction); 

Error in ==> ReadYaml at 38 
    ry = ReadYamlRaw(filename, 0, nosuchfileaction); 

शायद कोई इनमें से कुछ निकाल सकता है या आप काम करने वाले कार्यों के एक और सेट को इंगित कर सकते हैं? मैंने खोज की लेकिन इसे छोड़कर कोई भी नहीं मिला।

+1

है कि मेरे पास YAML की तरह एक बहुत लग रहा है –

+1

आप की कोशिश की है [yamlmatlab] (http://code.google.com/p/yamlmatlab/): एक स्ट्रिंग या एक फ़ाइल, उपयोग पार्स करने के लिए? – yuk

+0

@ डेविड ब्राउन फ़ाइल yml है। मैं भ्रमित हो सकता हूं क्योंकि मुझे .yml और .yaml के बीच का अंतर नहीं पता है। मैंने yamlmatlab को डाउनलोड और जोड़ा है लेकिन मुझे नहीं पता कि मेरे मामले में yaml_file = 'test.yaml' का उपयोग कैसे किया जाए; >> YamlStruct = ReadYaml (yaml_file); अगर मैं यमल को yml से बदलूं तो क्या यह काम करना चाहिए? – Michiru

उत्तर

8

यह वास्तव में वाईएएमएल फ़ाइल है (जैसा कि @ डेविड ब्रौन ने अपनी टिप्पणी में उल्लेख किया है, एक्सटेंशन कोई फर्क नहीं पड़ता)। लेकिन इसमें कुछ समस्याएं हैं। पता नहीं है कि यह गलत वाईएएमएल प्रारूप या MATLAB कार्यान्वयन के कारण है या नहीं।

मैंने YAMLMATLAB स्थापित किया है और आपकी फ़ाइल के साथ थोड़ा सा खेला है।

YamlStruct = ReadYaml(yaml_file); 

फ़ाइलों को फ़ीड करने पर YAMLMATLAB त्रुटि लौटाता है। यह केवल तभी काम करता है जब मैं पहली पंक्ति पर टिप्पणी करता हूं और फ़ील्ड नामों से रिक्त स्थान हटा देता हूं। तो फ़ाइल की शुरुआत इस तरह दिखती है:

#YAML:1.0 
Imagefile: 00032009.jpg 
Contourscount: 8 
...skipped the rest... 

तब मुझे सही संरचना मिलती है। उदाहरण के लिए आप उपयोग कर सकते हैं 1 बिंदु के x दायर नाम में समन्वय के रूप में

YamlStruct.Contours{1}.Points{1}.x 

ans = 

    682.5947 

अद्यतन

अंतरिक्ष वास्तव में YAMLMATLAB में एक ज्ञात समस्या है। रिपोर्ट और संभावित समाधान here देखें।

अद्यतन 2

@Jirka_cigler (YAMLMATLAB डेवलपर समूह) से टिप्पणी के अनुसार:

In the program release 0.4.3 we added support for whitespaces in field names, so the problem should not appear again.

वाह!

मैं भी हटा दिया है पिछले डेवलपर्स पहले अद्यतन में समस्या पर टिप्पणी यह ​​किसी भी अधिक सच नहीं है के बाद से।

+0

आपके उत्तर के लिए धन्यवाद। मैं यह त्रुटि त्रुटि मिलती है: फ़ाइल: ReadYamlRaw.m पंक्ति: 14 कॉलम: 11 अभिव्यक्ति या बयान सही नहीं है - संभवतः असंतुलित ({, या [.त्रुटि == में> ReadYaml 38 ry = ReadYamlRaw (फ़ाइल नाम, 0 पर, nosuchfileaction); मैंने yaml_file चर में 0032009.yml डाल दिया है, रिक्त स्थान हटा दिए हैं और पहली पंक्ति पर टिप्पणी की है जैसा आपने कहा था, फिर इसे पढ़ें लेकिन यह त्रुटि होती है। फ़ोल्डर और उपफोल्डर MATLAB पथ में जोड़े जाते हैं। तो क्या मुझे कुछ याद आ रहा है? कृपया मदद करें ! – Michiru

+0

मैं जोड़ सकते हैं कि मैं r2007b रिलीज के साथ काम करते हैं क्योंकि यह है कि क्या मेरी शिक्षक ने मुझे क्योंकि मैं करने के लिए। शायद उस त्रुटि। – Michiru

+0

त्रुटि अजीब बात है का कारण बनता है क्या। शायद yamlmatlab किसी भी तरह दूषित कर दी गई है। करने की कोशिश करो चाहता था नहीं स्थापित करने के लिए कहा था नवीनतम संस्करण को फिर से लोड करें और इंस्टॉल करें। क्या आप अपनी वाईएमएल-फाइल कहीं भी अपलोड कर सकते हैं? कुछ सार्वजनिक साझा करने वाली साइट हो सकती है? मुझे एक नज़र आएगी। – yuk

0

ZozaniDB Database Toolbox एक मैटलैब देशी YAML कार्यान्वयन कि .yml फ़ाइल यहाँ संभालती साथ आता है।

>> yaml_parse (str) 
>> yaml_read (filename)