以下是我的代码的样子:
// 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吗?
答案 0 :(得分:2)
您好我的用于查看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);
}
答案 1 :(得分:2)
有效的是std::cout << cv::Mat(results) << '\n';
这是cv::Mat
来自CvMat
的{{3}}而cv::Mat
有<<
constructed。
答案 2 :(得分:1)
std::cout << results <<"\n";
作为额外的奖励,它以可以直接复制到matlab的格式打印
答案 3 :(得分:0)
在OpenCV 3中,cv::Mat(results)
不再起作用(至少从我使用的版本OpenCV 3.2开始)。
相反,您应该使用cvarrToMat:
std::cout << cv::cvarrToMat(results) << '\n';