Mat img=imread("image_location");
我研究过'img'变量就像java中的一个对象引用变量,它引用了原始对象(在这种情况下是一个图像)。 出于好奇,我想找出'img'变量的含义。如果它指的是实际的对象,它应该保存一个地址并在我使用时返回地址
cout<<img;
但是,Shock,它将实际图像(像素值)返回到输出。 我认为我的理解有问题。 Plz帮助,我是一个努力让程序让我的大脑理解这些概念的noob程序员。
答案 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。