感兴趣区域:ROI
在图像处理领域,我们常常需要设置感兴趣区域(ROI,region of interest)来专注或者简化工作过程,也就是从图像中选择一个图像区域。
定义ROI区域的两种办法:
①使用表示矩形区域的Rect,指定矩形左上角坐标和矩形的长宽,定义一个矩形区域。
②指定感兴趣行或列的范围(range),Range是指从起始索引到终止索引(不包括终止索引)的一连段连续序列,cRange可以用来定义Range。
线性混合操作,addWeighted()函数,计算数组加权和
线性混合操作时一种典型的像素操作,两个输入。两幅图像或视频产生时间上的画面叠化效果。
//头文件命名部分
using namespace std;
using namespace cv;
//全局函数声明部分
bool ROI_AddImage();
//主函数部分
int main()
{
  system("color 5E");//控制台颜色
  double time0 = static_cast<double>(getTickCount());
  if (ROI_AddImage())
  {
    cout << endl << "运行成功,得出了你需要的图像~!:)";
  }
  time0 = ((double)getTickCount() - time0) / getTickFrequency();
  cout << "此方法运行时间为:" << time0 << "秒" << endl;
  waitKey(0);
  return 0;
}
//ROI_AddImage()函数
bool ROI_AddImage()
{
  //读入图像
  Mat srcImage1 = imread("LYU.jpg");
  Mat logoImage = imread("11.png");
  if (!srcImage1.data) { printf("读取srcImage1错误~!\n"); return false; }
  if (!logoImage.data) { printf("读取logoImage错误~!\n"); return false; }
  //定义一个Mat类型并给其设定ROI区域
  Mat imageROI = srcImage1(Rect(200, 250, logoImage.cols, logoImage.rows));
  //加载掩膜
  Mat mask = imread("11.png", 0);
  //掩膜复制到ROI
  logoImage.copyTo(imageROI, mask);
  //显示结果
  namedWindow("<1>利用ROI实现图像叠加示例窗口", 0);
  cvResizeWindow("<1>利用ROI实现图像叠加示例窗口", 640, 480);
  imshow("<1>利用ROI实现图像叠加示例窗口", srcImage1);
  return true;
}











