首页 > 代码库 > Mat的复制
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的复制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。