Mat img=imread("image_location");
我研究了“img”变量就像java中的对象引用变量,它引用原始对象(在这种情况下是图像)。出于好奇,我想找出“img”变量的含义。如果它指的是实际对象,它应该保存一个地址并在我使用时返回该地址
cout<<img;
但是,Shock,它将实际图像(像素值)返回到输出。我认为我的理解有问题。请帮助,我是一个菜鸟程序员,试图让我的大脑理解这些概念。
cv::Mat
将表示图像的数据保存在数组中,以及特定于cv::Mat
实例的其他数据。数据数组本身取决于图像的格式。你可以有不同数量的通道和通道深度,当你使用时,imread
你可以传递第二个参数来控制它。所以cv::Mat
没有指向原始对象的指针,它有一个指向包含表示该对象的数据的数组的指针。
最重要的是,在较新版本的 OpenCV 中,ostream& operator<<
为 重载cv::Mat
,并试图以矩阵格式生成数组值的良好打印输出。这是你看到的时候std::cout << someMat;
它可能是由 for 的过载引起operator<<
的cv::Mat
。
Mat 对象包含一个指向数据的指针,但它也包含其他值。有关更多信息,请参阅文档。