gpt4 book ai didi

c++ - OpenCV 子矩阵访问 : copy or reference?

转载 作者:可可西里 更新时间:2023-11-01 18:18:31 25 4
gpt4 key购买 nike

如果我使用以下方法从矩阵中提取子矩阵

cv::Mat A = cv::Mat::ones(4,4);

cv::Mat B = A( cv::Rect( 1, 1, 2, 2 ) );

“B”是“A”中这些值的拷贝还是引用了这些值?

能否举例说明如何获取

(1) 子矩阵的拷贝?

(2) 对子矩阵的引用?

最佳答案

B 是 A 的 Mat-header 的拷贝,但引用相同的像素。

因此,如果您操纵 B 的像素,A 也会受到影响。

(1)(“深拷贝”)将是:

cv::Rect r( 1, 1, 2, 2 );
cv::Mat A = cv::Mat::ones(4,4);
cv::Mat B = A(r).clone(); // now B has a seperate *copy* of the pixels

cv::Mat C;
A(r).copyTo(C); // another way to make a 'deep copy'

(2)(“浅拷贝”),这就是您在上面所做的:

cv::Mat B = A(r);         // B points to A's pixels

关于c++ - OpenCV 子矩阵访问 : copy or reference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27835439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com