4

OpenCV Mat を C++ でフォーマットして印刷する方法を教えてください。

たとえば、私が書いたとき、ダブルコンテンツMのマット

cout<<M<<endl;

私は手に入れます

[-7.7898273846583732e-15, -0.03749374753019832; -0.0374787251930463, -7.7893623846343843e-15]

しかし、たとえば、きれいな出力が必要です

[0.0000, -0.0374; -0.0374, 0.0000]

そうする組み込みの方法はありますか?

私たちは使用できることを知っています

cout<<format(M,"C")<<endl;

出力スタイルを設定します。だから私はこれに似たものを探しています。

どうもありがとうございました!

4

3 に答える 3

3
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <iostream>
#include <iomanip>

using namespace cv;
using namespace std;

void print(Mat mat, int prec)
{      
    for(int i=0; i<mat.size().height; i++)
    {
        cout << "[";
        for(int j=0; j<mat.size().width; j++)
        {
            cout << setprecision(prec) << mat.at<double>(i,j);
            if(j != mat.size().width-1)
                cout << ", ";
            else
                cout << "]" << endl; 
        }
    }
}

int main(int argc, char** argv)
{
    double data[2][4];
    for(int i=0; i<2; i++)
    {
        for(int j=0; j<4; j++)
        {
            data[i][j] = 0.123456789;
        }
    }
    Mat src = Mat(2, 4, CV_64F, &data);
    print(src, 3);

    return 0;
}
于 2013-06-25T14:44:15.173 に答える
0

これでうまくいくはずです:

cout.precision(5);
cout << M << endl;

次の前に、フォーマットを固定に設定することもできます。

cout.setf( std::ios::fixed, std::ios::floatfield );
于 2013-06-25T08:14:48.553 に答える