《opencv学习笔记》-- 感兴趣区域(ROI)、图像混合

目录

感兴趣区域(ROI)

图像混合


感兴趣区域(ROI)

在图像中选择一个区域。

定义ROI区域的方法有两种形式:

方法一:

使用Rect,指定左上角坐标以及矩形的长宽

Mat roi = image(Rect(100, 100, 250, 250));

image是已经载入的图像。

方法二:

指定感兴趣区域的行和列的范围

Mat roi = image(Range(20, 150), Range(30, 300));

Range:指从其实索引到终止索引的连续序列

 

显示效果:

 代码:

#include <iostream>
#include "opencv2/opencv.hpp"
using namespace cv;
int main()
{
	cv::Mat image = imread("E:\\roi_test.png");
	cv::imshow("源图", image);

	cv::Mat roi = image(Range(30, 280), Range(60, 300));
	cv::imshow("roi", roi);

	cv::waitKey(0);
	return 0;
}

图像混合

先指定ROI,在用addweighted对指定的ROI区域的图像进行混合的操作。

线性混合操作是一种典型的二元的像素操作,理论公式为:

 g(x) = (1 - a)F1(x) + aF2(x)

      a代表alpha的值(0.0~1.0),对两幅图像(F1(x)和F2(x))或两段视频(F1(x)和F2(x))产生时间上的画面叠化效果,前面页面切换至后面页面的一种叠加效果。

实现方式:addWeighted函数:计算两个数组(图像阵列)的加权和

void addWeighted(InputArray src1, 
                 double alpha,
                 InputArray src2,
                 double beta, 
                 double gamma, 
                 OutputArray dst, 
                 int dtype = -1);

参数1,InputArray类型的src1,表示需要加权的第一个数组;

参数2,double类型的alpha,表示src1的权重;

参数3,InputArray类型的src2,表示第二个数组,它需要和src1拥有相同的尺寸和通道数;

参数4,double类型的beta,表示src2的权重值;

参数5,double类型的gamma,一个加到权重总和上的标量值。

参数6,OutputArray类型的 dst,输出的数组,它和输入的两个数组拥有相同的尺寸和通道                 数;

参数7,int类型的dtype,输出阵列的可选深度,有默认值-1。当两个输入数组具有相同的深               度时,这个参数设置为-1(默认值),即等同于src1.depth()。

两个数组 (src1和src2 ) 的加权和:    对 addWeighted 参数中 beta 位为 1 - alpha   

gamma 位为0

dst = src1] * alpha  +  src2[ i ] * beta  +  gamma;

i:多维数组元素的索引值,再多通道数组的情况下,每一个通道需要独立处理。当输入数组的深度为CV_32S时,此函数不适用。

显示效果:

 

代码:

Mat srcImg1;
Mat srcImg2;
Mat srcImg3;
	
srcImg1 = imread("E:\\img\\logo3.png");
srcImg2 = imread("E:\\img\\logo4.png");

imshow("源图srcImg1", srcImg1);
imshow("源图srcImg2", srcImg2);

addWeighted(srcImg1, 0.5, srcImg2, 0.5, 0.0, srcImg3);
imshow("混合的srcImg3", srcImg3);

也可以指定roi之后,再将图片中的某个区域进行混合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值