OpenCV打印出矩阵的一个元素

OpenCV printing out an element of a matrix

本文关键字:一个 元素 打印 OpenCV      更新时间:2023-10-16

我试图打印存储图像的矩阵的元素,但由于某种原因,我遇到了调试错误。函数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)?

您不能将任何类型与Mat::at()一起使用,您必须坚持它所绑定的类型。如果您imread()一个没有任何其他标志的图像,则此类型将是Vec3b(24位bgr),neverint。此外,在执行此操作之前,您必须检查imread是否真的成功:

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

您可以访问任何元素,如下所示。

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

如果您从jpeg文件中读取,使用"uchar"应该会更好。

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