openCV学习笔记 ROI区域的操作

代码如下:

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>

using namespace cv;
using namespace std;

//函数声明
bool ROI_AddImage();

/*
	==========
	  主函数
	==========
*/
int main(int argc, char** argv)
{
	
	ROI_AddImage();
return 0;
}

bool ROI_AddImage()
{
	//读入图像
	Mat srcImage = imread("boy.jpg");
	Mat logo = imread("logo.jpg");
	if (srcImage.empty())
	{
		cout<<"读取原图错误!"<<endl;
		return false;
	}
	if (logo.empty())
	{
		cout<<"读取logo错误!"<<endl;
	}

	//.定义Roi区域
	Mat imageROI = srcImage(Rect(50,50,logo.cols,logo.rows));
	Mat mask = imread("logo.jpg",0);//加载logo灰度图

	//将掩膜复制到RoiImage
	logo.copyTo(imageROI, mask);

	//显示
	imshow("result",srcImage);
	waitKey(0);
	return true;
}

感性区域:ROI (region of interest).设置感性兴趣,用来专注或者简化工程。就是圈定一个指定的区域,作为分析和关注度重点。就是需要处理的区域,好处是这样可以减少计算的时间,增加精度。


然后定义一个roi方法有如下两种:

Mat imageROI;

1.法一:imageROI = srcImage(Rect(50,50,logo.cols, logo.rows));

2.法二:imageROI = sreIamge(Range(50,logo.rows+50), Range(50, logo.cols));

实现的函数流程是加载两张定义图片到srcImage和logo中, 然后定义Mat类的imageROI,并且使用Rect设置了感性区域,把srcImage 和imageROI关联了起来。接着读入logo的灰度图mask,最后把mask copy 到imageROI中。


bool ROI_AddImage_line()
{
	//读入图像
	Mat srcImage = imread("boy.jpg");
	Mat logo = imread("logo.jpg");
	if (srcImage.empty())
	{
		cout<<"读取原图错误!"<<endl;
		return false;
	}
	if (logo.empty())
	{
		cout<<"读取logo错误!"<<endl;
	}
//.定义Roi区域
Mat imageROI = srcImage(Rect(50,50,logo.cols,logo.rows));


addWeighted(imageROI,0.5, logo, 0.5, 0.0, imageROI);

//显示
imshow("result",srcImage);
waitKey(0);
return true;

}ROI线性混合的操作




函数说明:

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

参数说明:

第一个参数:src1,表示进行加权操作的第一个图像对象,即输入图片1;
第二个参数:double型的alpha,表示第一个图像的加权系数,即图片1的融合比例;
第三个参数:src2,表示进行加权操作的第二个图像对象,即输入图片2;
第四个参数:double型的beta,表示第二个图像的加权系数,即图片2的融合比例。很多情况下,有关系 alpha+beta=1.0;
第五个参数:double型的gamma,表示一个作用到加权和后的图像上的标量,可以理解为加权和后的图像的偏移量;
第六个参数:dst,表示两个图像加权和后的图像,尺寸和图像类型与src1和src2相同,即输出图像;
第七个参数:输出阵列的可选深度,有默认值-1。当两个输入数组具有相同的深度时,这个参数设置为-1(默认值),即等同于src1.depth()。

猜你喜欢

转载自blog.csdn.net/zqx951102/article/details/83868202