lire .yml fichiers dans matlab
Je voudrais lire .yml fichiers dans Matlab. Ces fichiers contiennent les coordonnées x et y des points clés sur une image de visage. J'ai regardé pour les différents outils, mais je ne semble pas trouver de réponse.
Mon .yml fichiers ressembler à ceci
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
......
et ainsi de suite
Note 00032009.jpg est une image d'un visage
x et y sont les coordonnées d'un point sur un visage par exemple: le bon coin de l'oeil etc
Pourriez-vous s'il vous plaît signaler une façon de lire le fichier et afficher les points sur le visage de l'image?
Edit 1: Voici l'erreur que je reçois
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);
Ce qui est bizarre, c'est la ligne 14 dans ReadYamlRaw.m
[pth,~,~]= fileparts(mfilename('fullpath'));
Parse error at ','(second one) and ']' usage appears to be invalid matlab syntax.
Alors, quelle est l'utilisation de ~ dans il et pourquoi est-il une erreur?
Edit2: j'ai remplacé le ~ dans la ligne ci-dessus avec des variables muettes puis-je obtenir cette erreur 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);
J'ai aussi essayé avec un autre fichier yml qui ressemble à ce
%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
Et j'obtiens les erreurs suivantes
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);
Peut-être que quelqu'un peut faire quelque chose de ces ou vous pourriez remarquer un autre ensemble de fonctions qui serait à l'œuvre? J'ai cherché mais n'ai pas trouvé sauf celui-ci.
Avez-vous essayé yamlmatlab?
David Brown Fichier yml. J'ai peut-être confondu, car je ne sais pas la différence entre les deux .yml et .yaml. J'ai téléchargé et ajouté yamlmatlab mais je ne sais pas comment l'utiliser dans mon cas yaml_file = 'test.yaml'; >> YamlStruct = ReadYaml(yaml_file); devrait-il travailler si je remplace le yaml avec yml?
Oui, l'extension n'a pas d'importance.
OriginalL'auteur Michiru | 2012-04-04
Vous devez vous connecter pour publier un commentaire.
C'est fichier YAML en effet (comme @DavidBrown mentionné dans son commentaire, l'extension n'a pas d'importance). Mais il a quelques problèmes. Ne sais pas si c'est dû à un mauvais format YAML ou MATLAB mise en œuvre.
J'ai installé YAMLMATLAB et a joué un peu avec votre fichier.
YAMLMATLAB renvoie une erreur si les fichiers se nourrir. Il ne fonctionne que si je commentaire de la première ligne et de supprimer les espaces de noms de domaine. Ainsi, le début du fichier ressemble à ceci:
Puis-je obtenir la structure correcte. Par exemple, vous pouvez accéder à la 1ère du point de
x
à coordonner, dans laMise à JOUR
Espace déposée noms est en fait un problème connu dans YAMLMATLAB. Voir le rapport et la solution possible ici.
Mise à JOUR 2
Selon le commentaire de @Jirka_cigler (YAMLMATLAB groupe pour les développeurs):
Grand!
J'ai aussi supprimé les anciens développeurs de commentaire sur le problème de la première mise à JOUR, car il n'est pas vrai non plus.
Je pourrais ajouter que je travaille avec r2007b libération, parce que c'est ce que mon professeur me dit de m'installer non pas parce que je le voulais. Peut-être que c'est ce qui provoque l'erreur.
L'erreur est étrange. Probablement le yamlmatlab été endommagé en quelque sorte. Essayez de retélécharger et installer la dernière version. Pouvez-vous envoyer votre yml-fichier quelque part? Certains publics, le site de partage peut être? Je vais jeter un oeil.
Désolé si le fichier a été la mienne je l'ai donné à vous, mais parce que c'est pas la mienne je ne peux pas le distribuer. L'erreur qui s'affiche est en ReadYaml fonction à [pth,~,~] dit quelque chose comme matlab peut pas analyser l' ',' et ']'. Ne me souviens pas exactement, je ne suis pas à mon ordinateur maintenant.
Je recherche pour
~
symbole dans le forfait et dans le contexte de cette nouvelle fonctionnalité, il apparaît que dans 3 états. On est dansselftest_yamlmatlab.m
, ligne 42 (vous n'avez probablement pas besoin de ce fichier), puis dansReadYamlRaw.m
la ligne 14 etWriteYaml
la ligne 7. Dans ces 2 fichiers, vous pouvez simplement laisserpth = ...
ou remplacer~
symbole avec certains variable muette, comme[pth,dummy,dummy] = ...
. Je te garantie que cela fonctionnera. Si elle n'est pas le cas, alors le problème n'est pas lié à~
.OriginalL'auteur yuk
ZozaniDB Base De Données De La Boîte À Outils est livré avec un Matlab-native YAML mise en œuvre qui gère la .fichier yml ici. Pour analyser une chaîne ou un fichier, utilisez:
OriginalL'auteur ahmetsacan