Mat的复制
Posted 变通无敌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mat的复制相关的知识,希望对你有一定的参考价值。
转自:http://blog.csdn.net/patkritlee/article/details/52782086
OpenCV中使用Mat,经常会碰到这样一种场景,会想拷贝一份Mat,并对新的Mat进行操作。但是OpenCV中的clone()和直接赋值都会导致共享数据区,也就是相当于&。
而使用copy,才会获取新的Mat。
1 #include <iostream> 2 #include <highgui.h> 3 4 using namespace std ; 5 using namespace cv ; 6 7 int main() 8 { 9 Mat image = imread("1.png" , 0) ; 10 11 //Mat image1(image) ;//仅是创建了Mat的头部分,image1与image共享数据区 12 //Mat image1 = image ;//仅是创建了Mat的头部分,image1与image共享数据区 13 //Mat image1 = image.clone() ;//完全拷贝,把image中的所有信息拷贝到image1中 14 Mat image1 ; 15 image.copyTo(image1) ;//拷贝image的数据区到image1中,在拷贝数据前会有一步:image1.create(this->size , this->type) 16 for(int h = 0 ; h < image1.rows ; ++ h) 17 { 18 uchar* ptr = image1.ptr(h) ; 19 for(int w = 0 ; w < image1.cols ; ++ w) 20 { 21 ptr[w] = 0 ; 22 } 23 } 24 imshow("image" , image) ; 25 imshow("image1" , image1) ; 26 waitKey() ; 27 return 0 ; 28 }
以上是关于Mat的复制的主要内容,如果未能解决你的问题,请参考以下文章