1

这是我的代码的样子:

// 10 rows and 2 cols matrix.
CvMat* results = cvCreateMat(10, 2, CV_32FC1);

// Some operations ...

ann->predict(samples, results);

// How to print out the **results** ?

是否有任何 C++ API ?

4

4 回答 4

2

Hi here is mine to be used for viewing inside data of CvMat.

void printMat(CvMat* mat, char* filename)
{
    FILE *pf =fopen(filename,"w");
    fprintf(pf,"(%dx%d)\n",mat->cols,mat->rows);
    for(int i=0; i<mat->rows; i++)
    {
        if(i==0)
        {
            for(int j=0; j<mat->cols; j++)  fprintf(pf,"%10d",j+1);
        }

        fprintf(pf,"\n%4d: ",i+1);
        for(int j=0; j<mat->cols; j++)
        {

            fprintf(pf,"%10.2f",cvGet2D(mat,i,j).val[0]);
        }
    }
    fflush(pf);
    fclose(pf);
}
于 2013-11-23T09:39:13.137 回答
2

有效的是std::cout << cv::Mat(results) << '\n';

这是因为cv::Mat可以从构造CvMat具有cv::Mat运算符<< 重载

于 2014-05-19T05:53:48.047 回答
1
std::cout << results <<"\n";

作为额外的奖励,它以可以直接复制到 matlab 中的格式打印

于 2013-05-26T04:22:52.200 回答
0

在 OpenCV 3 中,cv::Mat(results)不再起作用(至少从我使用的版本 OpenCV 3.2 开始)。

相反,您应该使用cvarrToMat

std::cout << cv::cvarrToMat(results) << '\n';

于 2017-03-26T22:36:17.073 回答