OpenCV学习记录(2) - 感兴趣区域、图像线性混合

1. 感兴趣区域

感兴趣区域(Region of interest)就是从图像中选择的一个区域,这个区域是我们图像分析所关注的重点。关注感兴趣区域,提升工作效率。

Opencv中,定义感兴趣区域的两种方法

  • 使用 cv::Rect 定义
  • 使用 cv::Range 定义
#include "opencv2/core/core.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"

Mat dog = imread("../dog.jpg", 1)

// 第一种,使用cv:Rect 定义
Mat imageROI;
imageROI = dog(Rect(0, 0, 100, 100)); //dog是Mat图片,roi以dog的(0, 0) 为顶点,宽100,高100

// 第二种,使用 cv::Range 定义
imageROI = dog(Range(250,250+logoImage.rows),Range(200,200+logoImage.cols));


2. 线性混合

图像的线性混合是将两幅图片按一定的比例叠加
类似幻灯片的切换、电影画面的切换时的效果。

  • 公式如下:
    在这里插入图片描述

此操作由 addWeighted() 函数实现:

void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);
  • src1 - 第一个输入数组。
  • alpha - 第一个数组元素的权重。
  • src2 - 与src1具有相同大小和通道数的第二个输入数组。
  • beta - 第二个数组元素的权重。
  • dst - 与输入数组具有相同大小和通道数的输出数组。
  • gamma - 标量加到每个总和。
  • dtype - 输出数组的可选深度;
    当两个输入数组具有相同的深度时,dtype可以设置为-1,这相当于src1.depth()。

公式表达:
d s t = s r c 1 α + s r c 2 β + γ dst = src1*\alpha+ src2*\beta + \gamma
此时, 后面多加了常量 γ \gamma

猜你喜欢

转载自blog.csdn.net/weixin_39129504/article/details/86005467
今日推荐