将垫元素 (uchar) 写入.csv
Writing Mat elements (uchar) to .csv
我想将Mat对象(OpenCV uchar)的内容输出到.csv文件中。
现在,我能够编写整数和双精度,甚至(似乎)uchar,但是在Excel中打开csv时,uchar 被解释为字符,因此我无法检查值。所以我试图在将它们保存到 csv 之前将它们转换为字符串,但它失败了。
到目前为止我的代码:
Ofstream Datalogger(path);
// Some code
for (int i = 0; i< vector1.size();i++)
{
Datalogger << i << ";"
<< vector1[i].someint << ";"
<< vector1[i].somedouble << ";"
const uchar* Mi = Mat1.ptr<uchar>(i);
for(int k = 0; k < Mat1.cols; k++)
{
std::string descr( Mi[k]);
Datalogger << descr << ";" ;
}
Datalogger << endl;
}
但错误代码是:
1 IntelliSense: no instance of constructor "std::basic_string<_Elem, _Traits, _Alloc>::basic_string [with _Elem=char, _Traits=std::char_traits<char>, _Alloc=std::allocator<char>]" matches the argument list argument types are: (const uchar)
这可能意味着字符串 descr() 不能接受 uchar。
知道如何将内容记录到 U.csv 并能够看到 uchar 的数值而不是被 Excel 解释为特殊字符吗?
好的,由于实际上不需要字符串,并且只能在Excel中读取数值,因此我只是简单地将转换为整数。
for (int i = 0; i< vector1.size();i++)
{
Datalogger << i << ";"
<< vector1[i].someint << ";"
<< vector1[i].somedouble << ";"
const uchar* Mi = Mat1.ptr<uchar>(i);
for(int k = 0; k < Mat1.cols; k++)
{
int descr = int( Mi[k]);
Datalogger << descr << ";" ;
}
Datalogger << endl;
}
cv::format() 也可能很有用:
cv::Mat M = cv::Mat::ones(3, 3, CV_8UC3);
std::cout << cv::format(M, "csv") << std::endl;
还有一些其他选项可以将垫子打印/格式化到输出:
http://docs.opencv.org/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.html#output-formatting
相关文章:
- 将一维数组写入 CSV C++中的不同列?
- C++ 将 CSV 文件的列写入向量
- 错误的值是使用c++从CSV文件数据写入数组
- C++ - 通过在控制台中包含 csv 文件的路径来读取和写入 csv 文件
- 为什么我在尝试将数组中的值写入 CSV 文件中时会出现段错误
- std::fstream 需要很长时间才能将大数据写入.csv文件中
- 如何多次写入.CSV文件并使用C 保留先前的数据
- 如何在CSV文件中写入列
- 如何在用户输入值后写入.csv文件的下一行,而不会覆盖以前的值?
- 如何将此代码的输出直接写入.csv文件
- 尝试阅读,然后在CSV文件上写入
- 通过C 的CSV读取和写入单元格
- 将垫元素 (uchar) 写入.csv
- 使用c++高效地将浮点数写入CSV文件
- 在C++中解析/写入 CSV 的首选库是什么?
- 用c++写入csv文件
- 无法在c++ Builder中写入.csv文件到StringGrid
- 将浮点值写入csv文件
- 用c++将矢量写入csv
- 如何将字符串写入.csv文件