Tôi đang cố gắng để tải một YAML trông như thế này:Sự khác biệt giữa! và !! trong yaml?
dist: !!opencv-matrix
rows: 380
cols: 380
dt: f
data: [ 0., 0., -1.88644529e+18, 2.45423365e+00, 11698176.,
2.03862047e+00, -8.85501460e+10, 2.54738545e+00, 1.71208843e+20,
...
2.44447327e+00 ]
Mã tải chỉ là:
import yaml
y = yaml.load(s)
nơi s là YAML nạp vào một chuỗi.
tôi nhận được lỗi này:
yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:opencv-matrix'
in "<string>", line 382, column 7:
dist: !!opencv-matrix
Đây là đủ công bằng, vì vậy tôi thêm các nhà xây dựng cho thẻ rằng:
def opencv_matrix(loader, node):
mapping = loader.construct_mapping(node)
mat = np.array(mapping["data"])
mat.resize(mapping["rows"], mapping["cols"])
return mat
yaml.add_constructor(u"!!opencv-matrix", opencv_matrix)
y = yaml.load(s)
tôi vẫn nhận được lỗi. Tuy nhiên, nếu tôi thay thế opencv_matrix bằng opencv_matrix thì mọi thứ sẽ hoạt động.
Điều gì đang xảy ra ở đây?
Làm cách nào bạn truy cập vào mat bằng các giá trị từ tệp yaml? Mảng được tạo ra dường như chỉ là số 0. – Acoop