3

我使用 PyYAML 读取文件,python 代码为:

with open('demo.yml') as f:
    dataMap = yaml.load(f)

演示.yml:

%YAML:1.0
my_svm: !!opencv-ml-svm
  svm_type: C_SVC
  kernel: { type:LINEAR }
  C: 1.

那么错误是:

yaml.scanner.ScannerError: while scanning a directive
  in "demo.yml", line 1, column 1
expected alphabetic or numeric character, but found ':'
  in "demo.yml", line 1, column 6

谁来帮帮我?

4

3 回答 3

4

该指令应该是%YAML 1.0(没有冒号)。您还需要一个“文档开始”(---)来将您的指令与文档分开。例如:

%YAML 1.0
---
my_svm: !!opencv-ml-svm
  svm_type: C_SVC
  kernel: { type: LINEAR }
  C: 1.
于 2013-03-22T13:19:33.893 回答
2

您可以从 opencv 修改由 opencv 3.0 file1 创建的 yaml 文件:

1 %YAML:1.0
2 my_svm: !!opencv-ml-svm
3   svm_type: C_SVC
4   kernel: { type:LINEAR }
5   C: 1.
6 ...

文件2:

1 my_svm: opencv-ml-svm
2   svm_type: C_SVC
3   kernel: { type: LINEAR }
4   C: 1.
5 ...

文件 1-> 文件 2:

  1. 删除第 1 行
  2. 删除“!!opencv-ml-svm”
  3. 在第 4 行的“type:”之后添加空格

然后你可以yaml.load(filename)用来加载你的数据。

于 2015-11-28T17:26:02.570 回答
-1

这对我有用:

from cv2 import cv
import numpy as np

filepath = "test.yml"
matrixA = np.array( cv.Load(filepath, cv.CreateMemStorage(), "matrixA") )
matrixB = np.array( cv.Load(filepath, cv.CreateMemStorage(), "matrixB") )
print "matrixA:", matrixA
print "matrixB:", matrixB

如所见:http: //xudongai.blogspot.jp/2013/08/how-to-use-python-to-load-opencv-yml.html

于 2015-07-27T07:39:56.280 回答