感兴趣区域: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;
}