OpenCV中Mat操作clone() 与copyto()的区别

来源:互联网 发布:数据库实施工程师 编辑:程序博客网 时间:2024/06/05 18:41
// Mat is basically a class with two data parts: the matrix header and //a pointer to the matrix containing the pixel values #include <iostream>#include <highgui.h>using namespace std ;using namespace cv ;int main(){Mat image = imread("1.png" , 0) ;//Mat image1(image) ;//仅是创建了Mat的头部分,image1与image共享数据区//Mat image1 = image ;//仅是创建了Mat的头部分,image1与image共享数据区//Mat image1 = image.clone() ;//完全拷贝,把image中的所有信息拷贝到image1中Mat image1 ;image.copyTo(image1) ;//拷贝image的数据区到image1中,在拷贝数据前会有一步:image1.create(this->size , this->type)for(int h = 0 ; h < image1.rows ; ++ h){uchar* ptr = image1.ptr(h) ;for(int w = 0 ; w < image1.cols ; ++ w){ptr[w] = 0 ;}}imshow("image" , image) ;imshow("image1" , image1) ;waitKey() ;return 0 ;}


0 2