如何根据C ++中的数据类型打印OpenCv矩阵?

时间:2015-01-27 22:02:49

标签: c++ opencv matrix

我需要打印一个OpenCV矩阵,之前我不知道它的类型。由于我使用.at函数遍历循环中的所有条目,因此我需要从矩阵类型到C ++数据类型的映射。但是我不想检查每个案例(CV_8UC1 ...... CV_64FC4)。

我可以将矩阵转换为类似的已知数据类型,并且只使用myMatrix.at读取矩阵吗?

以下是代码:

fstream << vecMat[0].rows<<" "<<vecMat[0].cols<<" "<<vecMat.size()<<" \n";
// Print 3d matrix as a 2d matrix
for(int x=0; x < vecMat[0].rows; x++)
{
    for(int z=0; z < vecMat.size(); z++)
    {
        for(int y=0; y < vecMat[0].cols; y++)
        {
                fstream << vecMat[z].at<UNKNOWN_DATA_TYPE>(x,y)<<" ";
        }
    }
    fstream<<" \n";
}

编辑: format(R,&#34; csv&#34;)没有帮助,因为我需要用空格而不是用逗号分隔矩阵字段。这使我更容易在使用中读取矩阵,例如

fstream >> vecMat[z].at<double>(x,y);

1 个答案:

答案 0 :(得分:4)

<<本地为mat类型重载,您可以指定其格式以更改其外观。例如(其中Rmat):

cout << "R (numpy) = " << endl << format(R,"numpy" ) << endl << endl;

可以使用这些格式的完整列表here