OpenCV中Mat操作clone() 與copyto()的區別


OpenCV中Mat操作clone() 與copyto()的區別

 

// 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 ;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM