我有一个矩阵
Mat B(480,640,CV_32FC1);
包含浮动值..我想将此矩阵写入可以在记事本或 Ms word 或 Excel 中打开的文件中以查看内部值并进行存储.. imwrite 函数 只能保存 8 位或 16 位图像..
如果可以这样做,请提出您的建议?如果是,如何?
原文由 Karthik Murugan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个矩阵
Mat B(480,640,CV_32FC1);
包含浮动值..我想将此矩阵写入可以在记事本或 Ms word 或 Excel 中打开的文件中以查看内部值并进行存储.. imwrite 函数 只能保存 8 位或 16 位图像..
如果可以这样做,请提出您的建议?如果是,如何?
原文由 Karthik Murugan 发布,翻译遵循 CC BY-SA 4.0 许可协议
OpenCV 可以以 JSON
、 XML
或 YAML
格式序列化(保存)其对象。您可以使用任何了解这些格式的编辑器来读取这些文件,或使用 OpenCV 从这些文件中下载数据(反序列化)。可以在 此处 找到如何完成此操作的详细说明。简而言之,要将数据存储到 xml
文件中,您必须调用
cv::FileStorage fs("/path/to/file.xml", cv::FileStorage::WRITE); // create FileStorage object
cv::Mat cameraM; // matrix, which you need to save, do not forget to fill it with some data
fs << "cameraMatrix" << cameraM; // command to save the data
fs.release(); // releasing the file.
If you want to use JSON
or YAML
, just change the extension to .json
or .yaml/.yml
- openCV will automatically understand your intentions.
重要的是命令
fs << "cameraMatrix" << cameraM;
字符串 "cameraMatrix"
是标签名称,该矩阵将存储在该名称下,稍后可以在文件中找到该矩阵。
请注意, xml
格式不允许您使用带有空格和一些特殊字符的标签名称,因为只允许使用字母数字值、点、破折号和下划线(详见 XML
规范) ,而在 YAML
和 JSON
你可以有类似的东西
fs << "Camera Matrix" << cameraM;
原文由 John Smith 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
使用纯 OpenCV API 调用:
文件扩展名可以是 xml 或 yml 。在这两种情况下,您都会得到一个可以轻松删除/解析的小标题,然后您可以访问浮点格式的数据。我成功地使用了这种方法(使用 yml 文件)将数据导入 Matlab 和 Matplotlib
要获取数据:
瞧。如果它没有正确猜测图像大小,您可能必须在 matlab 命令行中重塑生成的矩阵。