OpenCV3之——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; 
}

运行结果如下:

OpenCV3之——copyTo()函数的使用方法_第1张图片

接下来,我们令mask=0,观察输出结果如下,很明显mask为0的区域并没有被替换成img2图像:

OpenCV3之——copyTo()函数的使用方法_第2张图片

再接下来,我们将mask直接等于img2图像,看看会怎么样?在mask中,非0区域的图像被保留下来,而像素值为0的区域则保持不变。

OpenCV3之——copyTo()函数的使用方法_第3张图片

你可能感兴趣的:(OpenCV学习)