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()。
公式表达:
此时, 后面多加了常量
。