OpenCV打印出矩阵的元素

时间:2015-02-19 19:39:38

标签: c++ opencv

我正在尝试打印存储图像的矩阵元素,但由于某种原因,我收到了调试错误。函数abort()继续调用。我贴了下面的代码:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main(){
    Mat img = imread("D:/OwnResearch/photo2.jpg");
    std::cout << img.at<int>(1, 1, 1) << std::endl;
    return 0;

}

我想知道是否有办法获得第i个,第j个,第k个元素或矩阵img(类型为Mat)?

2 个答案:

答案 0 :(得分:0)

你不能使用Mat :: at()所需的任何类型,你必须坚持它所绑定的那个。如果你imread()没有任何其他标志的图像,这种类型将是Vec3b(24位bgr),永远 int。此外,你必须检查,如果imread实际上成功,那么:

Mat img = imread("D:/OwnResearch/photo2.jpg");
if ( ! img.empty() )
{
    std::cout << img.at<Vec3b>(1, 1) << std::endl;
}

答案 1 :(得分:0)

您可以访问以下示例中的任何元素。

 img.at<uchar>(x , y)[channel]

使用&#34; uchar&#34;如果从jpeg文件中读取,应该会更好。

更详细:http://www.developerstation.org/2012/01/access-mat-in-c-using-opencv.html