在Mat矩阵类的成员函数中,copyto(ROI,mask )函数是一个非常方便的函数,特别是后面的mask可以实现掩码的功能。 用几个实例说明其作用。我们要注意mask的数据类型,必须是CV_8U,且通道数或者是1,或者与roi一致
首先,将mask设置为与roi大小相同的一个矩阵。
int main () matimg1=im read (d :/code work/my image/baboon.jpg ',0 ); matimg2=im read (' d :/code work/my image/Linux.jpg ',0 ); imshow(initialimg1)、img1); matroi=img1(rect (0,0,img2.cols,img2.rows ) );
//分别将像素值设定为1、0,然后设定mask=img2.clone (; 观察输出结果matmask(ROI.Rows,roi.cols,roi.depth )、scalar(1);
img2.copyto(ROI,mask );
imshow(Loganimg2)、img2);
imshow(aftermaskimg1)、img1);
waitKey (;
返回0;
}运行结果如下。
其次,设mask=0,从输出结果来看,很明显mask为0的区域没有被img2图像置换:
接下来,让mask直接等于img2图像,看看会发生什么。 mask将保留非0区域的图像,而像素值为0的区域将保持不变。
转载于:https://www.cn blogs.com/phoenix dsg/p/8420716.html