Mat对象的拷贝

 浅层拷贝————

Mat A,C;//仅仅创建两个矩阵头
A = imread(image,IMREAD_COLOR);//根据读取到的图像大小为A的数据区开辟内存区
Mat(B)A;//使用拷贝构造函数创建一个新的Mat类对象B
C = A;//使用赋值操作符把A对象复制给C

 

 上面所有的Mat对象最终都指向了同一个数据区块。区别只是矩阵头不一样。使用其中一个比如A对象修改数据,那么此修改将会影响到B和C。

 

 

深层拷贝————clone函数和copyTo函数

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

 A,F,G的数据区独立存在,互不影响

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 OpenCV 中,`cv::Mat` 是一个重要的类,用于表示图像、矩阵和张量等数据结构。当需要将一个 `cv::Mat` 对象复制到另一个 `cv::Mat` 对象时,可以使用以下方法: 1. 使用 `cv::Mat::clone()` 函数 `cv::Mat::clone()` 函数用于创建一个与原始 `cv::Mat` 对象具有相同尺寸和数据的新 `cv::Mat` 对象。新对象的数据是通过复制原始对象的数据获得的,因此两个对象的数据是独立的。例如: ```c++ cv::Mat src = cv::imread("test.png"); cv::Mat dst = src.clone(); ``` 上述代码中,首先读取一张图像文件,返回一个 `cv::Mat` 类型的对象 `src`。然后,使用 `clone()` 函数创建一个新的 `cv::Mat` 对象 `dst`,并将 `src` 对象的数据复制到 `dst` 对象中。 2. 使用 `cv::Mat::copyTo()` 函数 `cv::Mat::copyTo()` 函数用于将原始 `cv::Mat` 对象的数据复制到目标 `cv::Mat` 对象中。与 `clone()` 函数不同,`copyTo()` 函数可以指定目标对象的大小和数据类型。例如: ```c++ cv::Mat src = cv::imread("test.png"); cv::Mat dst(src.size(), src.type()); src.copyTo(dst); ``` 上述代码中,首先读取一张图像文件,返回一个 `cv::Mat` 类型的对象 `src`。然后,使用 `src` 对象的大小和类型创建一个新的 `cv::Mat` 对象 `dst`,并使用 `copyTo()` 函数将 `src` 对象的数据复制到 `dst` 对象中。 需要注意的是,`clone()` 函数和 `copyTo()` 函数都会复制 `cv::Mat` 对象的数据,因此可能会占用大量的内存。在处理大型图像或矩阵时,应该谨慎使用这些函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值