【发布时间】:2015-06-25 09:47:40
【问题描述】:
我是 C++ 编程和 OpenCV 的新手。我正在阅读关于 OpenCV 中 Mat 类的 this 教程。它说“每个 Mat 对象都有自己的标题”并多次使用术语标题。我不确定标题在这种情况下是什么意思?
我尝试谷歌搜索并找到this 页面,上面写着:“Mat 基本上是一个包含两个数据部分的类:矩阵标题(包含矩阵的 大小 等信息,用于存储的方法,在存储的矩阵是哪个地址,等等)............”
现在我明白了大小是什么意思,但我有两个问题需要澄清:
- “用于存储的方法”指的是什么? Mat 类中的哪个成员表示这一点?
- 地址,是否对应Mat类中的“datastart”成员?
谢谢!
【问题讨论】:
-
也许你可以把它想象成一个“数据包”,前面有一个小的描述部分(宽度、高度、类型等),后面是实际的内容/数据/像素跨度>
-
感谢@berak 的回复。我刚刚编辑了我的问题,寻求更详细的说明。请考虑回答。
-
对于像图像这样的大数据元素,用户不想一直复制所有数据(例如在每个函数调用中),但使用指针通常是不安全的。所以opencv使用那些矩阵头(cv::Mat obhect)作为复制成本不高的对象。相反,大量数据由该标头中的指针给出。因此,每当您复制 cv::Mat 对象(例如使用复制构造函数)时,您不会复制整个图像/像素数据,而只是复制标题。
-
感谢@Micka 的回答。