首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在OpenCV C++中打印出(Mat)矩阵的值

在OpenCV C++中打印出(Mat)矩阵的值
EN

Stack Overflow用户
提问于 2011-11-02 02:22:37
回答 5查看 113.1K关注 0票数 64

我想使用cout将OpenCV中的矩阵的值转储到控制台。我很快意识到,我对OpenvCV的类型系统和C++模板的理解还不够好,无法完成这个简单的任务。

能不能请读者发个帖子(或者给我指给我)一个打印Mat的小函数或代码片段?

向你致敬,亚伦

PS:使用较新的C++ Mat接口而不是较旧的CvMat接口的代码优先。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-02 03:11:00

请参阅Accessing a matrix element in the "Mat" object (not the CvMat object) in OpenCV C++的第一个答案

然后循环遍历cout << M.at<double>(0,0);中的所有元素,而不仅仅是0,0

或者更好的是使用C++接口:

代码语言:javascript
复制
cv::Mat M;
cout << "M = " << endl << " "  << M << endl << endl;
票数 102
EN

Stack Overflow用户

发布于 2018-07-09 08:55:39

如果您使用的是opencv3,则可以像python numpy style一样打印Mat

代码语言:javascript
复制
Mat xTrainData = (Mat_<float>(5,2) << 1, 1, 1, 1, 2, 2, 2, 2, 2, 2);

cout << "xTrainData (python)  = " << endl << format(xTrainData, Formatter::FMT_PYTHON) << endl << endl;

输出如下所示,你可以看到它更具可读性,更多信息请参见here

但在大多数情况下,不需要输出Mat中的所有数据,可以按行范围输出,如0~2行:

代码语言:javascript
复制
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <iostream>
#include <iomanip>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    //row: 6, column: 3,unsigned one channel
    Mat image1(6, 3, CV_8UC1, 5);

    // output row: 0 ~ 2
    cout << "image1 row: 0~2 = "<< endl << " "  << image1.rowRange(0, 2) << endl << endl;

    //row: 8, column: 2,unsigned three channel
    Mat image2(8, 2, CV_8UC3, Scalar(1, 2, 3));

    // output row: 0 ~ 2
    cout << "image2 row: 0~2 = "<< endl << " "  << image2.rowRange(0, 2) << endl << endl;

    return 0;
}

输出如下:

票数 7
EN

Stack Overflow用户

发布于 2014-02-18 18:14:03

我认为使用matrix.at<type>(x,y)不是通过Mat对象进行迭代的最佳方式!如果我没记错的话,每次调用矩阵时,matrix.at<type>(x,y)都会从矩阵的开头开始迭代(不过我可能错了)。我建议使用cv::MatIterator_

代码语言:javascript
复制
cv::Mat someMat(1, 4, CV_64F, &someData);;
cv::MatIterator_<double> _it = someMat.begin<double>();
for(;_it!=someMat.end<double>(); _it++){
    std::cout << *_it << std::endl;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7970988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档