我正在研究 OpenCV,但我有一个困惑。我经历过这个link http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html#cv-mat-operator我不太理解OpenCV中“=”运算符的概念。
假设我声明了 3 个矩阵,如下所示:
Mat img1, img2, gray;
如果我获得矩阵gray
从相机捕获的图像并将其分配给img1
如下所述,实际发生了什么?数据是否在gray
被复制到img1
还是他们之间共享数据?
img1 = gray;
OpenCV 的Mat
类只是一个header对于实际的图像数据,它包含一个指向的指针。这=
运算符复制指针(以及标题中的其他信息,例如图像尺寸),以便两者Mat
s 共享相同的数据。这意味着一次修改数据Mat
也在另一个方面改变它。这称为“浅”复制,因为仅复制顶层(标头),而不复制较低层(数据)。
要制作基础数据的副本(称为“深层副本”),请使用clone()
方法。您可以在链接到的页面上找到有关它的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)