1. 程式人生 > >Opencv中copyTo()函式的使用方法

Opencv中copyTo()函式的使用方法

https://www.cnblogs.com/phoenixdsg/p/8420716.html

在Mat矩陣類的成員函式中copyTo(roi , mask)函式是非常有用的一個函式,尤其是後面的mask可以實現蒙版的功能,我們用幾個例項來說明它的作用。我們要注意mask的資料型別,必須是CV_8U,且通道數或者是1,或者與roi一致

首先我們令mask為尺寸與roi一致的1矩陣:

複製程式碼

int main()
{
    Mat img1=imread("D:/CodeWork/MyImage/baboon.jpg",0);
    Mat img2=imread("D:/CodeWork/MyImage/linux.jpg",0);
    imshow("initial img1",img1);
    
    Mat roi=img1(Rect(0,0,img2.cols,img2.rows));
//分別令畫素值為1、0,以及令mask=img2.clone();觀察輸出結果

    Mat mask(roi.rows,roi.cols,roi.depth(),Scalar(1));

    img2.copyTo(roi,mask); 
    imshow("logan img2",img2); 
    imshow("after mask img1",img1); 
    waitKey(); 
    return 0; 
}

複製程式碼

執行結果如下:

接下來,我們令mask=0,觀察輸出結果如下,很明顯mask為0的區域並沒有被替換成img2影象:

再接下來,我們將mask直接等於img2影象,看看會怎麼樣?在mask中,非0區域的影象被保留下來,而畫素值為0的區域則保持不變。