Opencv:无法从文本文件正确读取/写入 OpenCV
Opencv: Unable to correctly read/write from/to using OpenCV from a text file?
系统信息: Windows 7, 32 位, OpenCV 2.4.10, MSVS 2010
我有一个包含一些整数值的文本文件。我想在 Mat 对象 m 中读取这些值,然后在控制台上打印出来。
到目前为止,我尝试的是:
int main()
{
Mat m;
/// read:
FileStorage fs("myfile.txt",FileStorage::READ);
if (!fs.isOpened()) {std::cout << "unable to open file storage!" << std::endl; return 0;}
fs["mat1"] >> m;
cout << "mat1 = "<< endl << " " << m << endl << endl;
return 0;
}
然而,这打印了;
mat1 = []
文件中的实际数据为:
123456
123456
所以请帮助我了解这里出了什么问题。
更新我甚至尝试了mytext.xml只需重命名.text文件即可。但我仍然看到空矩阵如上所示。
哦,所以文件没有打开,因为输出是:
无法打开文件存储!
文件存储无法读取任意 txt 文件。 它必须是 XML 或 YML。 所以,如果你想以这种方式阅读它,你最好也以前以这种方式保存它。
Mat m = ...;
/// write:
FileStorage fs("myfile.txt",FileStorage::WRITE);
fs << "mat1" << m;
fs.release(); // flush
如果您只有 TXT 文件,请尝试其他方法:
(这假设是整数!
#include <fstream>
using namespace std;
ifstream in("my.txt");
vector<int> nums;
while ( !in.eof() ) {
int n;
in >> n;
nums.push_back(n);
}
// now make a Mat from the vector:
Mat mat(nums);
如果您确定FileStorage
正在打开文件,请在调用此函数时检查
fs["mat1"] >> m;
mat1
是保存在 .yml
或.xml
文件中的变量的名称。
相关文章:
- 如何在C++中从文件中读取/写入多个对象
- 为什么我的程序在读取/写入文件时会删除最重要的数字?
- 用 C++20 的给定键读取/写入 std::multimap 的所有值?
- 从缓冲区读取/写入文件
- 如何运行外部程序,向其传递内存地址以读取/写入?
- C++11 原子<>:只能使用提供的方法读取/写入?
- 从QDataStream读取/写入QT
- 在Windows上读取/写入未格式化的SD卡
- 尝试读取/写入Graphviz DAG值的工作证明会导致segfault
- 在 c++ 中读取/写入文件
- 在 c++ 中向/从文件中读取写入变量
- 如何在 c++ 中读取/写入无符号数组到 ifstream/ostream?
- QTcpSocket 或 QSslSocket 是否会自动创建用于读取/写入的线程?
- 使用来自 C 的内存地址的 Julia 读取/写入结构数据
- C++ 如何使用相同的类和方法来读取/写入可变大小的数据
- 在 Cap'nProto 中读取/写入配置结构
- 在另一个线程中读取/写入信息
- 提升信息解析器在读取/写入 INFO 格式文件时删除所有注释
- 在常量引用获取器上读取写入互斥锁(使用 Qt)
- C 读取/写入两个不同的文件(需要帮助了解要使用的语法)