首页 > 解决方案 > 如何将opencv mat转换为字符串c ++

问题描述

float matrix_data[] = {0.9867, 0.02454, -0.1603,
                       0.01921, 0.9638, 0.2657,
                       0.16112, -0.2652, 0.9506};

cv::Mat res_mat = cv::Mat(3,3,CV_32F,matrix_data);
cout << "res_mat :" << res_mat<<endl;

我知道我可以通过这个看到垫子的输出,但我想将此垫子添加到字符串中,如下所示:

std::string my_str = "my mat :";
my_str += to_String(res_mat);

所以期望的结果将是:

my mat : 0.9867, 0.02454, -0.1603, 0.01921, 0.9638, 0.2657,0.16112, -0.2652, 0.9506

标签: c++opencvmatrix

解决方案


使用std::ostringstream. 在此之前,为您的矩阵创建新标头以将其视为向量:

cv::Mat oneRow = res_mat.reshape(0,1);    // Treat as vector 
std::ostringstream os;
os << oneRow;                             // Put to the stream
std::string asStr = os.str();             // Get string 
asStr.pop_back();                         // Remove brackets
asStr.erase(0,1);
cout << "res_mat :" << asStr <<endl;

推荐阅读