1
Mat img=imread("image_location");

我研究了“img”变量就像java中的对象引用变量,它引用原始对象(在这种情况下是图像)。出于好奇,我想找出“img”变量的含义。如果它指的是实际对象,它应该保存一个地址并在我使用时返回该地址

cout<<img;

但是,Shock,它将实际图像(像素值)返回到输出。我认为我的理解有问题。请帮助,我是一个菜鸟程序员,试图让我的大脑理解这些概念。

4

3 回答 3

2

cv::Mat将表示图像的数据保存在数组中,以及特定于cv::Mat实例的其他数据。数据数组本身取决于图像的格式。你可以有不同数量的通道和通道深度,当你使用时,imread你可以传递第二个参数来控制它。所以cv::Mat没有指向原始对象的指针,它有一个指向包含表示该对象的数据的数组的指针。

最重要的是,在较新版本的 OpenCV 中,ostream& operator<<为 重载cv::Mat,并试图以矩阵格式生成数组值的良好打印输出。这是你看到的时候std::cout << someMat;

于 2012-05-13T07:43:13.243 回答
1

它可能是由 for 的过载引起operator<<cv::Mat

于 2012-05-13T07:08:22.830 回答
0

Mat 对象包含一个指向数据的指针,但它也包含其他值。有关更多信息,请参阅文档

于 2012-05-13T07:37:22.317 回答