Opencv中copyTo()函式的使用方法
阿新 • • 發佈:2018-11-10
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的區域則保持不變。