2012-04-04 15 views
5

Ich möchte .myl Dateien in Matlab lesen. Diese Dateien enthalten die Koordinaten x und y von Schlüsselpunkten auf einem Gesichtsbild. Ich suchte nach verschiedenen Werkzeugen, aber ich finde keine Antworten.lesen .myl Dateien in Matlab

Meine .yml Dateien so aussehen

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 

......

und so weiter

Hinweis 00032009.jpg ein Bild eines Gesichts ist x und y Koordinaten eines Punktes auf einem Gesicht ZB: die rechte Ecke eines Auges usw.

Könnten Sie bitte einen Weg zeigen, die Datei zu lesen und dann die Punkte auf dem Gesichtsbild anzuzeigen?

Edit 1: ist hier der Fehler ich

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

Was seltsam ist die Linie 14 in ReadYamlRaw.m ist

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

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

Also, was ist die Verwendung von ~ dort und warum Gibt es einen Fehler?

EDIT2: Ich habe die ~ in der Zeile oben mit Dummy-Variablen ersetzt dann bekomme ich diese Fehler 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); 

ich mit einer anderen yml Datei auch versucht, die

%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 
sieht wie folgt aus

Und ich bekomme folgende Fehler

Vielleicht kann jemand etwas daraus machen oder Sie könnten auf andere Funktionen hinweisen, die funktionieren würden? Ich suchte, fand aber keine außer diesem.

+1

, die viel wie yaml mir sieht –

+1

Haben Sie versucht, [yamlmatlab] (http://code.google.com/p/yamlmatlab/)? – yuk

+0

@ David Brown Datei ist yml. Ich könnte verwirrt sein, da ich den Unterschied zwischen .yml und .yaml nicht kenne. Ich habe yamlmatlab heruntergeladen und hinzugefügt, aber ich weiß nicht, wie ich es in meinem Fall verwenden soll yaml_file = 'test.yaml'; >> YamlStruct = ReadYaml (yaml_file); sollte es funktionieren, wenn ich Yaml durch Yml ersetze? – Michiru

Antwort

8

Es ist in der Tat YAML-Datei (wie @DavidBrown in seinem Kommentar erwähnt, spielt die Erweiterung keine Rolle). Aber es hat ein paar Probleme. Ich weiß nicht, ob es an einem falschen YAML-Format oder an einer MATLAB-Implementierung liegt.

Ich habe YAMLMATLAB installiert und spielte ein wenig mit Ihrer Datei.

YamlStruct = ReadYaml(yaml_file); 

YAMLMATLAB gibt Fehler, wenn die Dateien füttern, wie ist. Es funktioniert nur, wenn ich die erste Zeile kommentiere und Leerzeichen von Feldnamen entferne. So sieht der Anfang der Datei so aus:

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

Dann bekomme ich die richtige Struktur. Zum Beispiel können Sie die erste Punkt der Zugang x als

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

ans = 

    682.5947 

UPDATE

Raum in eingereichten Namen koordinieren ist eigentlich ein bekanntes Problem in YAMLMATLAB. Siehe den Bericht und mögliche Lösung here.

UPDATE 2

Laut von @Jirka_cigler (YAMLMATLAB Entwickler-Gruppe) Kommentar:

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

Great!

Ich habe auch frühere Entwickler Kommentar auf das Problem in der ersten UPDATE entfernt, da es nicht mehr wahr ist.

+0

Vielen Dank für Ihre Antwort. Ich bekomme diesen Fehler Fehler: Datei: ReadYamlRaw.m Zeile: 14 Spalte: 11 Ausdruck oder Anweisung ist falsch - möglicherweise unausgeglichen (, {, oder [.Error in ==> ReadYaml bei 38 ry = ReadYamlRaw (Dateiname, 0, nosuchfileaction); Ich habe 0032009.yml in die Variable yaml_file geschrieben, die Leerzeichen entfernt und die erste Zeile kommentiert, wie Sie gesagt haben und dann gelesen, aber dieser Fehler ist aufgetreten. Der Ordner und die Unterordner werden dem MATLAB-Pfad hinzugefügt ! – Michiru

+0

Ich könnte hinzufügen, dass ich mit r2007b Release arbeite, weil das ist, was mein Lehrer mir gesagt hat, nicht zu installieren, weil ich wollte. Vielleicht ist das, was den Fehler verursacht. – Michiru

+0

Der Fehler ist seltsam. Wahrscheinlich wurden die yamlmatlab irgendwie beschädigt Redownload und installiere die neueste Version Kannst du deine Yml-Datei irgendwo hochladen? Eine öffentliche Sharing-Seite kann sein? Ich werde es mir ansehen. – yuk

0

ZozaniDB Database Toolbox kommt mit einer Matlab-nativen YAML-Implementierung, die hier die .yml-Datei verarbeitet. Um einen String oder eine Datei, die Verwendung zu analysieren:

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