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


在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的區域則保持不變。

 


免責聲明!

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



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