我正在尝试使用 OpenCV 网站上提供的教程从 YAML 文件中读取数据。我正在按照建议使用“>>”运算符。
cv::Mat R;
cv::FileStorage fs;
fs.open(filename, cv::FileStorage::READ);
R >> fs["matrix"];
它基本上可以工作,但我希望矩阵是 double 而不是浮点精度。将矩阵 R 键入为 double 矩阵并不能完成这项工作。实现这一目标的正确方法是什么。
最佳答案
要将图像加载为“ double ”,也就是 CV_64F
类型,图像还需要存储为 CV_64F
。
如果图像保存为 “单精度”,也就是 CV_32F
类型,您可以将其加载为 CV_32F
,然后使用以下方法转换为 CV_64F
:
R.convertTo(R, CV_64F);
可以查看保存矩阵的格式打开yml文件,查看dt
字段。对于 CV_32F
格式,它将包含一个 f
,对于 CV_64F
格式,它将包含一个 d
。
关于具有 double YAML 的 Opencv Read Mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42249192/