OpenCV Mat 类分信息头和像素矩阵指针两部分

Mat 类分为矩阵头一个指向所有像素值的指针。通过引用计数机制来管理内存释放,每个 Mat 对象有自己的信息头,但共享同一个矩阵。

Mat A, c; // 仅创建信息头部分
A = imread("1.jpg", CV_LOAD_IMAGE_COLOR); // 为矩阵开辟内存
Mat B(A); // 拷贝构造函数
C = A; // 复制运算符

如上,拷贝构造函数值只复制信息头和矩阵指针,而不复制矩阵。

引用部分数据的信息头,如创建一个感兴趣的 ROI,只需要创建包含边界信息的信息头:

Mat D(A, Rect(10, 10, 100, 100)); // 使用矩形界定
Mat E = A(Rect:all(), Range(1, 3); // 用行和列来界定

如何拷贝像素矩阵?用 clone() 或 copyTo()。

Mat F = A.clone();
Mat G =;
A.copyTo(G);

这样不同对象不会相互影响矩阵像素。




参考:

《OpenCV3 编程入门》 毛星云 P87

上一篇:实时识别色子的点数的算法_OPENCV_C++篇


下一篇:剑指 Offer 10- I. 斐波那契数列