opencv中的图像表示

时间:2012-05-13 05:04:12

标签: c++ opencv

Mat img=imread("image_location");

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

cout<<img;

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

3 个答案:

答案 0 :(得分:2)

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

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

时看到的内容

答案 1 :(得分:1)

这可能是operator<<的{​​{1}}超载造成的。

答案 2 :(得分:0)

Mat对象包含指向数据的指针,但它也包含其他值。有关详细信息,请参阅documentation