Bootstrap

opencv中感兴趣区域以及mask的使用

在图像处理的过程中,我们时常需要对指定区域或目标进行操作,这个区域我们称之为感兴趣区域。在学习opencv的初级阶段,对于感兴趣区域的操作方法是必须要掌握的。
Mat image,mask;
  Rect r1(100,100,50,100);
  Mat img1,img2,img3,img4;
  for(;;)
  {


    sequence >> image;
    mask = Mat::zeros(image.size(),CV_8UC1);//zero为与image相同大小的全0图像
    mask(r1).setTo(255); //把mask图像的r1区域设为255,即r1大小的白色块


    img1 = image(r1); //把image中的r1区域取出保存到img1中


    image.copyTo(img2,mask);//把image与mask合并保存到img2中,即image与mask的非0区域合并
    
    image.copyTo(img3);
    img3.setTo(0,mask);//相当于把image中的与mask的非0区域相同的区域置0,即只有r1区域被置0




    imshow("Image sequence", image);
    imshow("img1",img1);
    imshow("img2",img2);
    imshow("img3",img3);
    imshow("mask",mask);
    waitKey(0);
  }
;